TypeScript环境声明 – TypeScript开发教程

上一章TypeScript教程请查看:TypeScript鸭子类型(duck-typing)
TypeScript提供了一种安全、轻松使用现有JavaScript库的方法,比如jQuery、AngularJS和Node.js等,环境声明允许我们安全地使用现有的流行JavaScript库。
环境声明告诉TypeScript编译器其他地方存在的实际源代码(比如变量/函数)。如果我们的TypeScript代码需要使用第三方库,而第三方库是用jQuery/AngularJS/Node等普通JavaScript库编写的。我们总是可以写环境声明,环境声明描述了原本存在并将用TypeScript编写的类型。
环境声明环境声明文件需要保存扩展名(d.ts),扩展名为.d的文件,ts必须将declare关键字置于每个根级别定义的前缀。它向作者表明不会有TypeScript发出的代码,作者需要确保声明的项在运行时存在。
环境声明告诉编译器实际的源代码在其他地方,如果这些源代码在运行时不存在,而我们试图使用它们,那么它将在没有警告的情况下中断。
环境声明文件类似于docs文件。如果源文件改变了,文档也需要更新。如果环境声明文件没有更新,它将返回编译错误。

Test.d.ts

我们无法将上述文件转换成JavaScript,我们可以使用上面的文件进行类型安全和智能感知。
我们可以使用declare关键字来声明环境变量和方法,环境声明的语法如下所示。
语法
declare module module_name{ }

【TypeScript环境声明 – TypeScript开发教程】访问环境文件的语法
/// < 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; } }

现在,将这个环境声明文件(CalcSum.d.ts)包含到TypeScript文件中。
Main.ts
/// < reference path = "CalcSum.d.ts" /> var obj = new TestSum.Calc(); console.log("Sum: " +obj.doSum(15,25));

编译并执行主程序.ts文件,在控制台中使用以下命令。
$ tsc main.ts $ node Main.js

    推荐阅读