如何建立高質量的TypeScript宣告檔案(三)
繼續上篇文章[ofollow,noindex">如何建立高質量的TypeScript宣告檔案(二) ]
模組外掛或UMD外掛
模組外掛更改另一個模組(UMD或模組)的形狀。 例如,在Moment.js中,時刻範圍為時刻物件添加了一個新的範圍方法。
出於編寫宣告檔案的目的,無論要更改的模組是普通模組還是UMD模組,您都將編寫相同的程式碼。
模板
使用module-plugin.d.ts模板。
全域性外掛
全域性外掛是改變某些全域性形狀的全域性程式碼。 與全域性修改模組一樣,這些會增加執行時衝突的可能性。
例如,某些庫將新函式新增到Array.prototype或String.prototype。
識別全域性外掛
全域性外掛通常很容易從他們的文件中識別出來。
您將看到如下所示的示例:
var x = "hello, world"; // Creates new methods on built-in types console.log(x.startsWithHello()); var y = [1, 2, 3]; // Creates new methods on built-in types console.log(y.reverseAndSort());
模板
使用global-plugin.d.ts模板。
全域性修改模組
全域性修改模組在匯入時會更改全域性範圍中的現有值。 例如,可能存在一個庫,在匯入時會向String.prototype新增新成員。 由於執行時衝突的可能性,這種模式有點危險,但我們仍然可以為它編寫宣告檔案。
識別全域性修改模組
全域性修改模組通常很容易從其文件中識別。 通常,它們與全域性外掛類似,但需要一個require呼叫來啟用它們的效果。
你可能會看到這樣的文件:
// 'require' call that doesn't use its return value var unused = require("magic-string-time"); /* or */ require("magic-string-time"); var x = "hello, world"; // Creates new methods on built-in types console.log(x.startsWithHello()); var y = [1, 2, 3]; // Creates new methods on built-in types console.log(y.reverseAndSort());
模板
使用global-modifying-module.d.ts模板。
使用依賴性
您可能擁有多種依賴關係。
對全域性庫的依賴
如果您的庫依賴於全域性庫,請使用/// <reference types ="..."/>
指令:
/// <reference types="someLib" /> function getThing(): someLib.thing;
對模組的依賴性
如果您的庫依賴於模組,請使用import語句:
import * as moment from "moment"; function getThing(): moment;
未完待續...