TypeScript 什么是环境声明

TypeScript 什么是环境声明

TypeScirpt提供了一种更简单、更安全地使用第三方库(如Node.jsjQuery、AngularJS等)的方式,这是通过环境声明来实现的。

环境声明是一种告知TypeScript编译器的方法,真实的源代码(如函数或变量)存在于其他位置。如果我们尝试在运行时使用这些源代码但它们不存在,没有给出提示的话,代码将会出错。我们必须始终编写环境声明,如果我们的TypeScript代码需要使用第三方JavaScript库,如jQueryAngularJS、Node.js等。

在使用这些JavaScript库,如jQuery、AngularJS、Node.js等时,验证代码补全和类型安全性对于TypeScript程序员来说变得困难。因此,环境声明有助于直接将其他JavaScript库集成到TypeScript中。

定义环境声明: 环境声明文件必须使用扩展名 d.ts 保存。在环境声明文件的每个根级定义前面都必须添加 declare 关键字,并且扩展名为 d.ts 。作者通过这个可以清楚地了解到TypeScript不会发布任何代码,作者需要确认在运行时已声明的项目将存在。

环境声明文件类似于文档文件(如果源代码发生更改,文档文件需要及时更新)。因此,如果环境声明文件不更新,它们将返回编译错误。按照约定,环境声明文件保存在具有扩展名为d.ts的类型声明文件中,如下所示:

Trial.d.ts

上述文件不能被转译为 JavaScript 文件。它可以用于代码自动补全和类型安全。

现在要声明环境方法和变量,我们必须使用 declare 关键字。声明环境变量或环境声明的语法如下:

语法:

declare module module_name {
}

在客户端TypeScript文件中提及环境文件的语法如下:

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

特点: 以下是TypeScript中环境声明(ambient)的特点:

  • 环境声明允许安全地使用现有的受欢迎的JavaScript库。
  • 环境声明帮助直接将其他JavaScript库集成到TypeScript中。
  • 环境声明是告诉编译器关于现有变量/函数等的一种方式。
  • 环境声明中有一个declare关键字,意味着我们声明了一个变量的类型而没有实现它们,并且TypeScript会假设我们会以某种方式包含该实现(通过添加脚本标签或任何自定义编译器)。

应用: 在TypeScript中,环境用于描述不是用TypeScript编写的库的形状,为此我们必须声明该库所公开的API。这是因为JavaScript库很少公开顶级对象,更好的表示方法是使用命名空间。

我们在环境声明中使用declare关键字,意味着我们声明了一个变量的类型而没有实现它们,并且TypeScript会假设我们会以某种方式包含该实现(通过添加脚本标签或任何自定义编译器)。通常,它们被描述在.d.ts文件中。因此,我们必须编写一个环境模块,为已经用JavaScript编写的代码编写类型声明。如前所述,它们定义在以.d.ts文件扩展名结尾的文件中。

因此,基本上环境声明是与编译器进行的一种保证。如果第三方库在运行时不存在,我们尝试使用它们,可能会在没有警告的情况下出现错误。

示例1: 为了理解环境声明,可以查看下面给出的示例。这里使用了一个第三方JavaScript库的代码示例如下:

JavaScript

var TestSum;     
(function (TestSum) {     
   var Calc = (function () {    
      function Calc() {    
      }    
      Calc.prototype.doSum = function (x, z) {   
         return x + z;   
      }   
   })   
})

作为一个JS文件,我们没有时间将这个给定的库重写成typescript。但是,你确实需要添加具有类型安全的doAdd()函数,然后通过使用ambient声明,我们可以做到这一点。所以,现在我们将创建一个ambient声明文件。

Javascript

declare module TestAdd{    
   export class Calc {    
      doAdd(x:number, z:number) : number;    
   }   
}

现在,我们将在TypeScript文件中包含这个环境声明文件(CalAdd.d.ts)。如下所示:

Main.ts

var obj = new TestAdd.Calc();    
console.log("Add: " +obj.doAdd(60, 15));

现在,在控制台上使用以下命令编译并执行Main.ts文件:

$ tsc main.ts
$ node Main.js

输出: 我们将会得到以下的输出:

75

示例2: 要理解环境声明,请查看下面给出的示例。这里使用了第三方JavaScript库,代码如下:

Javascript

var TestDif; 
(function (TestDif) {     
   var Calc = (function () {    
      function Calc() {    
      }    
      Calc.prototype.doDif = function (x, z) {   
         return x - z;   
      }   
   })   
})

作为一个JS文件,我们没有时间重新编写这个给定的库成为TypeScript。但是,你确实需要添加 doSubtract() 函数来确保类型安全,然后通过使用环境声明,我们可以做到这一点。所以,现在我们将创建一个环境声明文件。

JavaScript

declare module TestDif{    
   export class Calc {    
      doSubtract(x:number, z:number) : number;    
   }   
}

现在,我们将把这个环境声明文件包含在TypeScript文件中。以下是文件内容:

Main.ts

var obj = new TestDif.Calc();    
console.log("Subtract: " + obj.doSubtract(50, 10));

现在,在控制台上使用以下命令编译和执行Main.ts文件:

$ tsc main.ts 
$ node Main.js

输出: 我们将会得到下面的输出:

40

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程