TypeScript一:安裝和編譯

TypeScript環(huán)境搭建與編譯執(zhí)行

TypeScript 編寫(xiě)的程序并不能直接通過(guò)瀏覽器運(yùn)行,需要先通過(guò) TypeScript 編譯器把代碼編譯成 JavaScript 代碼
TypeScript 的編譯器是基于 Node.js 的,需要先安裝 Node.js

1.安裝Node.js

2.安裝 TypeScript編譯器

npm i -g typescript 
//查看當(dāng)前 tsc 編譯器版本 
tsc -v

3.編寫(xiě)代碼

TypeScript 的文件的后綴為 .ts

//index.ts
let text: string = 'TypeScript'

4.編譯

當(dāng)前目錄下執(zhí)行指令

tsc ./index.ts

默認(rèn)情況下會(huì)在當(dāng)前文件所在目錄下生成同名的 js 文件

//index.js
var text = 'TypeScript';

編譯指令選項(xiàng)

--outDir

指定編譯文件輸出目錄

--target

指定編譯的代碼版本目標(biāo),默認(rèn)為 ES3

--watch

在監(jiān)聽(tīng)模式下運(yùn)行,當(dāng)文件發(fā)生改變的時(shí)候自動(dòng)編譯

//編譯當(dāng)前路徑文件
tsc ./src/helloKaiKeBa.ts 
//編譯當(dāng)前路徑文件輸出到dist目錄
tsc --outDir ./dist ./src/helloKaiKeBa.ts 
//編譯當(dāng)前路徑文件輸出到dist目錄,js代碼版本為ES6
tsc --outDir ./dist --target ES6 ./src/helloKaiKeBa.ts 
//編譯當(dāng)前路徑文件輸出到dist目錄,js代碼版本為ES6,并開(kāi)啟監(jiān)聽(tīng)模式,后續(xù)在ts文件寫(xiě)代碼會(huì)自動(dòng)編譯。
tsc --outDir ./dist --target ES6 --watch ./src/helloKaiKeBa.ts

編譯配置文件tsconfig.json

把編譯的一些選項(xiàng)保存在一個(gè)指定的 json 文件中,

默認(rèn)情況下 tsc 命令運(yùn)行的時(shí)候會(huì)自動(dòng)去加載運(yùn)行命令所在的目錄下的 tsconfig.json 文件

//tsconfig.json
{
    "compilerOptions": {
        "outDir": "../dist",
        "target": "es5",
        "watch": true
    },
    "include": ["../src/**/*"]
}
//命令行指令
tsc 

也可以使用 --project 或 -p 指定配置文件目錄或某個(gè)具體的配置文件

tsc -p ./configs 
tsc -p ./configs/ts.json

語(yǔ)法轉(zhuǎn)換

TypeScript 在編譯過(guò)程中只會(huì)轉(zhuǎn)換語(yǔ)法(比如擴(kuò)展運(yùn)算符,箭頭函數(shù)等語(yǔ)法進(jìn)行轉(zhuǎn)換,對(duì)于A(yíng)PI 是不會(huì)進(jìn)行轉(zhuǎn)換的(如promise),而是引入一些擴(kuò)展庫(kù)進(jìn)行處理的。

如果我們的代碼中使用了 target 中沒(méi)有的 API ,則需要手動(dòng)進(jìn)行引入,默認(rèn)情況下 TypeScript 會(huì)根據(jù)target 載入核心的類(lèi)型庫(kù)

target 為 es5 時(shí): ["dom", "es5", "scripthost"]

target 為 es6 時(shí): ["dom", "es6", "dom.iterable", "scripthost"]

如果代碼中使用了這些默認(rèn)載入庫(kù)以外的代碼,則可以通過(guò) lib 選項(xiàng)來(lái)進(jìn)行設(shè)置

https://www.typescriptlang.org/tsconfig/#lib

Object.assign({}, {x: 1, y: 'zmouse'}, {z: 2});
//屬性“assign”在類(lèi)型“ObjectConstructor”上不存在。是否需要更改目標(biāo)庫(kù)? 請(qǐng)嘗試將 “l(fā)ib” 編譯器選項(xiàng)更改為“es2015”或更高版本。

//解決方案,配置項(xiàng)里,lib項(xiàng)增加es6庫(kù)

{
    "compilerOptions": {
        "target": "es5",
        "lib": ["es6","dom"]//lib項(xiàng)增加es6庫(kù)
    },
    "include": ["./src/**/*"]
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容