1. 程式人生 > 其它 >ts 淺瞭解——宣告檔案.d.ts

ts 淺瞭解——宣告檔案.d.ts

.d.ts檔案 -- 宣告檔案

用途:編寫型別宣告

注意:同目錄下.d.ts和.ts檔案不要同名,否則模組系統無法只根據檔名載入模組

宣告檔案可以被匯入,使用其中暴露的型別定義

宣告檔案可定義型別或者宣告值:

  • *** 型別可以直接定義 ***

  • *** 值的宣告需要藉助 declare 關鍵字 ***,如果不使用 declare 關鍵字,值的宣告和初始化是一起的(宣告檔案只起到宣告的作用)

    let a: number;
    
    // 編譯為
    var a;
    

    宣告一個值需要用 declare 否則會被認為存在初始化的內容,從而報錯

    let a: number = 1; // error TS1039: Initializers are not allowed in ambient contexts.
    
    declare let foo: number
    

    注意:declare 多個同名的變數是會衝突的

    declare 也允許出現在.ts檔案中,但一般不這麼做:

    .ts檔案中直接使用 let / const / function / class 就可以宣告並初始化一個變數。並且.ts檔案編譯後也會去掉 declare 的語句,所以不需要 declare語句。

    declare 可宣告一個值,也可用來宣告一個模組和全域性的外掛(這是在特定場景用來給第三方包做宣告)

    declare module用來給一個第三方模進行型別宣告:

    比如有一個第三方包foo,沒有型別宣告。我們可以在我們專案中實現一個宣告檔案來讓TypeScript可以識別模組型別:foo.d.ts

    // foo.d.ts
    declare module "foo" {
      export let size: number
    }
    
    // 使用
    import foo from "foo"
    console.log(foo.size)
    

如果宣告檔案不匯出(export)預設是全域性可以訪問的