如何创建高质量的TypeScript声明文件(三)

原创
2018/11/06 14:05
阅读数 102

转载 如何创建高质量的TypeScript声明文件(三)

继续上篇文章[如何创建高质量的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;

未完待续...

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部