如何創(chuàng)建高質(zhì)量的TypeScript聲明文件(三)

轉(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ù)...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容