TypeScript - 环境声明



环境声明是一种告诉 TypeScript 编译器实际源代码存在于其他位置的方法。当您使用大量第三方js库(如 jquery/angularjs/nodejs)时,您无法将其重写为 TypeScript。对于 TypeScript 程序员来说,在使用这些库时确保类型安全和智能感知将极具挑战性。环境声明有助于将其他js库无缝集成到 TypeScript 中。

定义环境声明

按照惯例,环境声明保存在扩展名为 (d.ts) 的类型声明文件中。

Sample.d.ts

上述文件不会被编译成 JavaScript。它将用于类型安全和智能感知。

声明环境变量或模块的语法如下所示:

语法

declare module Module_Name {
}

应在客户端 TypeScript 文件中引用环境文件,如下所示:

/// <reference path = " Sample.d.ts" />

示例

让我们通过一个例子来理解这一点。假设您得到一个包含类似以下代码的第三方 JavaScript 库。

FileName: CalcThirdPartyJsLib.js 
var TutorialPoint;  
(function (TutorialPoint) {  
   var Calc = (function () { 
      function Calc() { 
      } 
      Calc.prototype.doSum = function (limit) {
         var sum = 0; 
         
         for (var i = 0; i <= limit; i++) { 
            Calc.prototype.doSum = function (limit) {
               var sum = 0; 
               
               for (var i = 0; i <= limit; i++) { 
                  sum = sum + i; 
                  return sum; 
                  return Calc; 
                  TutorialPoint.Calc = Calc; 
               })(TutorialPoint || (TutorialPoint = {})); 
               var test = new TutorialPoint.Calc();
            }
         }
      }
   }
}   

作为 TypeScript 程序员,您将没有时间将此库重写为 TypeScript。但是您仍然需要使用 doSum() 方法并保证类型安全。您可以使用环境声明文件。让我们创建一个环境声明文件 Calc.d.ts

FileName: Calc.d.ts 
declare module TutorialPoint { 
   export class Calc { 
      doSum(limit:number) : number; 
   }
}

环境文件不包含实现,它只是类型声明。现在需要在 TypeScript 文件中包含这些声明,如下所示。

FileName : CalcTest.ts  
/// <reference path = "Calc.d.ts" /> 
var obj = new TutorialPoint.Calc(); 
obj.doSum("Hello"); // compiler error 
console.log(obj.doSum(10));

以下代码行将显示编译器错误。这是因为在声明文件中,我们指定了输入参数将是数字。

obj.doSum("Hello");

注释掉上面的行,并使用以下语法编译程序:

tsc CalcTest.ts

编译后,它将生成以下 JavaScript 代码 (CalcTest.js)。

//Generated by typescript 1.8.10
/// <reference path = "Calc.d.ts" />
var obj = new TutorialPoint.Calc();

// obj.doSum("Hello");
console.log(obj.doSum(10));

为了执行代码,让我们添加一个带有脚本标签的 html 页面,如下所示。添加编译后的 CalcTest.js 文件和第三方库文件 CalcThirdPartyJsLib.js。

<html> 
   <body style = "font-size:30px;"> 
      <h1>Ambient Test</h1> 
      <h2>Calc Test</h2> 
   </body> 
   
   <script src = "CalcThirdPartyJsLib.js"></script> 
   <script src = "CalcTest.js"></script> 
</html>

它将显示以下页面:

Ambient Declarations

在控制台中,您可以看到以下输出:

55

同样,您可以根据需要将 jquery.d.ts 或 angular.d.ts 集成到项目中。

广告