如何创建高质量的TypeScript声明文件(三)
继续上篇文章[如何创建高质量的TypeScript声明文件(二)]
模块插件或UMD插件
模块插件更改另一个模块(UMD或模块)的形状。 例如,在Moment.js中,时刻范围为时刻对象添加了一个新的范围方法。
出于编写声明文件的目的,无论要更改的模块是普通模块还是UMD模块,您都将编写相同的代码。
模板
使用module-plugin.d.ts模板。
全局插件
全局插件是改变某些全局形状的全局代码。 与全局修改模块一样,这些会增加运行时冲突的可能性。
例如,某些库将新函数添加到Array.prototype或String.prototype。
识别全局插件
全局插件通常很容易从他们的文档中识别出来。
您将看到如下所示的示例:
1 | var x = "hello, world"; |
模板
使用global-plugin.d.ts模板。
全局修改模块
全局修改模块在导入时会更改全局范围中的现有值。 例如,可能存在一个库,在导入时会向String.prototype添加新成员。 由于运行时冲突的可能性,这种模式有点危险,但我们仍然可以为它编写声明文件。
识别全局修改模块
全局修改模块通常很容易从其文档中识别。 通常,它们与全局插件类似,但需要一个require调用来激活它们的效果。
你可能会看到这样的文档:
1 | // 'require' call that doesn't use its return value |
模板
使用global-modifying-module.d.ts模板。
使用依赖性
您可能拥有多种依赖关系。
对全局库的依赖
如果您的库依赖于全局库,请使用/// <reference types ="..."/>
指令:
1 | /// <reference types="someLib" /> |
对模块的依赖性
如果您的库依赖于模块,请使用import语句:
1 | import * as moment from "moment"; |
未完待续…