ts筆記-型別宣告
阿新 • • 發佈:2021-10-14
全域性型別宣告
對於使用js編寫的第三方庫,通常可以在DefinitelyTyped中找到types包,比如jQuery。
npm install @types/jquery --save-dev
使用
// 即使沒有手動引入,全域性也都擁有型別提示
$.ajax()
原因:預設所有可見的"@types"包會在編譯過程中被包含進來。 node_modules/@types資料夾下以及它們子資料夾下的所有包都是可見的; 也就是說, ./node_modules/@types/,../node_modules/@types/和../../node_modules/@types/等等。
如何手動管理types包
如果想要手動指定載入包,可以配置types選項,指定載入哪些包
{
"compilerOptions": {
"types" : [] // 如果配置為[],上面的$就沒有提示了。改為["jquery"],就又擁有提示了
}
}
自定義宣告
如果想要為自己寫的js庫新增宣告檔案也很簡單,在tsconfig的同級目錄建立一個@types
資料夾,根據上面說的types載入機制,@types目錄下的包是可以自動載入進來的。但需要注意的是這裡的型別宣告是全域性的,比如:
// @types/bar.d.ts 定義一個介面 interface Point { x: number, y: number } // @types/bar.d.ts 宣告一個全域性變數 declare let point:Point
// 其他任何ts檔案都有提示
const name1: Point = {
x: 100
y: 300
}
說明:根級別的宣告都必須以 declare
關鍵字作為字首,例如變數point
說明:對於這些影響全域性的宣告,通常建議放到一個統一檔案中,比如global.d.ts
。如果僅供某個檔案使用,可以在ts檔案中定義宣告。