TypeScript:接口与类对比模块与程序与功能

Nil*_*Pun 61 typescript

我阅读了位于以下网址的TypeScript规范:http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf

但是它让我对以下内容感到困惑:

  1. 接口
  2. 模块
  3. 程式
  4. 功能.
  5. 声明与变量

有人可以简单地帮助理解上面哪一个应该用于何时?接口和类是否与C#版本相同?

Fen*_*ton 128

我已经在你的问题中提到了这些答案与C#相匹配,但希望这些答案对于从类似语言来到TypeScript的人也很有用.

接口

TypeScript中的接口类似于您在C#中遇到的接口.它是一个契约 - 如果你的一个类实现了一个接口,它承诺有接口文件的某些属性或方法.

在TypeScript中,接口可以从另一个接口继承以扩展它,并从类继承捕获其实现.

只要在TypeScript中看起来不可能,您通常可以通过界面解决它!

在TypeScript中,接口具有广泛的用途.它们描述了一个结构,因此可以在任何使用类型的地方使用(即不仅仅是在类中实现它们,您可以使用它们来键入变量,参数,返回值等).

这与C#中的类概念非常相似.您可以从其他类继承以扩展或专门化该行为.

命名空间

较新的namespace关键字用于在有限的范围内放置一组代码.这类似于C#名称空间.

在TypeScript方面,模块比命名空间更好.模块(以前称为外部模块)是一个自包含的文件,不会向全局范围添加任何内容.您可以根据需要将模块加载到本地变量中.模块提供了一种组织代码和按需加载部件的好方法.使用模块时,最好避免使用名称空间.模块比命名空间更好.

程序

程序是模块,类的集合.这基本上是您使用TypeScript编写的内容.

功能/方法

类包含方法,您还可以编写不属于类的独立函数.

声明与变量

var创建一个新变量.declare用于告诉TypeScript该变量已在其他地方创建.如果您使用declare,则不会向生成的JavaScript添加任何内容 - 它只是对编译器的提示.

例如,如果您使用定义外部脚本var externalModule,你会用declare var externalModule暗示来的打字稿编译器externalModule已经成立.

  • 并且(与命名空间不同)模块也可以在类之外具有自己的函数和变量. (16认同)