1. 程式人生 > 其它 >ts筆記-型別宣告

ts筆記-型別宣告

全域性型別宣告

對於使用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檔案中定義宣告。

常用網站: SegmentFault | GitHub | 掘金社群