TS (TypeScript)區別於JS (JavaScript)一個最大的不同是TS增加了類型。當一些TS代碼要使用JS包的時候,最好這些JS包都有類型介紹,比如這個變量是什么類型,那個函數參數的什么類型,返回什么類型參數等等,這個Type Declaration File有點像是C++的頭文件,定義了JS包的接口信息,這個文件的后綴是.d.ts
如果讓我們從頭手寫一個JS包的.d.ts文件會比較痛苦,因為JS包本身就寫得很亂,有定義了很多對象,有時候要理清他們之間的關系就是頭疼的事情,特別是如果JS包很大的話,那基本上很花時間了。
那么有兩個解決方案,在npm包管理中,有一類@types/package的包,就是別人已經寫好了的對應package的.d.ts文件。我們只用使用npm install --save @types/package就行了。
這個網站能搜到@types包含了哪些JS的包,一些常用的基本都有
https://microsoft.github.io/TypeSearch/
如果這上面沒有,一些比較冷門的JS包怎么辦呢?
那就得自己寫,自己寫可以參考TS官網關於怎么寫的說明文檔
https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html
另外我發現一個很好的工具dts-gen,
https://github.com/Microsoft/dts-gen
根據它的說明,安裝好了之后,它會針對目標JS包自動生成一個最基本款的.d.ts文件,幫你理清目標JS包的結構,自己在對於這個文件做進一步的細化和修改。
這個特別好,但是有時候對於一些特別復雜的JS包,它會拋出異常,目前看是bug了,總之比沒有強很多
