轉(zhuǎn)載 ## 如何創(chuàng)建高質(zhì)量的TypeScript聲明文件(三)
繼續(xù)上篇文章[如何創(chuàng)建高質(zhì)量的TypeScript聲明文件(二)]
模塊插件或UMD插件
模塊插件更改另一個模塊(UMD或模塊)的形狀。 例如,在Moment.js中,時刻范圍為時刻對象添加了一個新的范圍方法。
出于編寫聲明文件的目的,無論要更改的模塊是普通模塊還是UMD模塊,您都將編寫相同的代碼。
模板
使用module-plugin.d.ts模板。
全局插件
全局插件是改變某些全局形狀的全局代碼。 與全局修改模塊一樣,這些會增加運行時沖突的可能性。
例如,某些庫將新函數(shù)添加到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模板。
全局修改模塊
全局修改模塊在導(dǎo)入時會更改全局范圍中的現(xiàn)有值。 例如,可能存在一個庫,在導(dǎo)入時會向String.prototype添加新成員。 由于運行時沖突的可能性,這種模式有點危險,但我們?nèi)匀豢梢詾樗帉懧暶魑募?/p>
識別全局修改模塊
全局修改模塊通常很容易從其文檔中識別。 通常,它們與全局插件類似,但需要一個require調(diào)用來激活它們的效果。
你可能會看到這樣的文檔:
// '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模板。
使用依賴性
您可能擁有多種依賴關(guān)系。
對全局庫的依賴
如果您的庫依賴于全局庫,請使用/// <reference types ="..."/>指令:
/// <reference types="someLib" />
function getThing(): someLib.thing;
對模塊的依賴性
如果您的庫依賴于模塊,請使用import語句:
import * as moment from "moment";
function getThing(): moment;
未完待續(xù)...