[Typescript]引用第三方JS

前言

在Typescript內引用Javascript(第三方套件),需要透過定義檔(d.ts),方可在ts內加入參考。

 

定義檔(d.ts)

宣告方法及回傳值,不包含實現。簡單來說,就是使得ts有型別的關念,定義檔是中間層的interface(js=>ts 型別對應)。

ps:大部分的第三方套件都有現成的定義檔,不需要自己寫。第三方定義檔可參考點此

第三方Javascript套件與typescript

Javascript與d.ts與ts之間溝通,舉例如下:

  • 第三方Javascript:mod1 Javascript使用方式為: var mod2=require("mod1");

  • ts的引用方式為: ​import * as mod1 from "mod1"; //import mod1 = require("mod1"); 可直接使用,不須透過d.ts檔 //import {z} from "mod1";

  • 新建mod1.d.ts則需宣告: 須注意由於javascirpt是使用require("mod1"),需匹配declare module "mod1"。裡面要開放的物件也是名稱要相符。

    ​declare module "mod1"{
       export function normalizeEntity(base: string, input: any): any;
       export function z(base: string): (input: any) => (base: string, input: any)=>void;
    }

     

  • 將mod1.d.ts的位置加入tsd.d.ts

    • tsd.d.ts全局參考用,子物件可以不需要依靠相對位置,而直接使用檔案內的 declare module Name 來引用。



By 天藍小火-ts路上