TypeScript 环境声明
TypeScript提供了一种安全且简便的方式来使用现有的JavaScript库,如jQuery、AngularJS、Node.js等。环境声明使我们能够安全地使用现有的流行JavaScript库。
环境声明告诉TypeScript编译器实际的源代码(如变量/函数)存在于其他地方。如果我们的TypeScript代码需要使用以纯JavaScript库编写的第三方库,如jQuery/AngularJS/Node.js,我们总是可以编写环境声明。环境声明描述了本应存在并用TypeScript编写的类型。
环境声明
环境声明文件需要使用扩展名 (.d.ts) 保存。扩展名为.d.ts的文件的每个根级别的定义都必须以 declare 关键字为前缀。这清楚地告诉作者TypeScript不会生成任何代码。作者需要确保声明的项在运行时存在。
环境声明告诉编译器实际的源代码存在于其他地方。如果这些源代码在运行时不存在但我们试图使用它们,那么会导致错误而没有任何警告。
环境声明文件就像 文档 文件。如果源文件发生更改,文档也需要进行更新。如果环境声明文件未更新,将会返回编译错误。
Test.d.ts
我们无法将上述文件 trans-compiled 成JavaScript。我们可以使用该文件进行 type-safety 和 IntelliSense 。
我们可以使用 declare 关键字声明环境变量和方法。环境声明的语法如下所示。
语法
declare module module_name{
}
访问环境文件的语法
/// <reference path = "AmbientFileName.d.ts" />
示例
通过以下示例我们可以理解环境声明。这里我们使用了一个第三方JavaScript库来实现以下代码。
Addition.js
var TestSum;
(function (TestSum) {
var Calc = (function () {
function Calc() {
}
Calc.prototype.doSum = function (a, b) {
return a + b;
}
})
})
以上是一个 JS文件 ,我们没有太多时间将这个库重写为TypeScript。但是,如果我们需要使用 doSum() 函数,并保证类型安全,我们可以使用 声明文件 来实现。让我们创建一个声明文件。
CalcSum.d.ts
declare module TestSum {
export class Calc {
doSum(a:number, b:number) : number;
}
}
现在,在我们的TypeScript文件中包含这个环境声明文件
(CalcSum.d.ts)
Main.ts
///
var obj = new TestSum.Calc();
console.log("Sum: " +obj.doSum(15,25));
在控制台上使用以下命令编译并执行 Main.ts 文件。
$ tsc main.ts
$ node Main.js
我们将得到以下输出。
Sum: 40