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

时间:2012-10-06 21:58:06

标签: typescript

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

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

  1. 接口
  2. 模块
  3. 程序
  4. 功能
  5. 声明与var
  6. 有人可以简单地帮助理解上面哪一项应该用于何时?接口和类是否与C#版本相同?

1 个答案:

答案 0 :(得分:128)

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

<强>接口

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

在TypeScript中,接口可以从另一个接口继承,以便扩展它,从类中继承它以捕获它的实现。

每当TypeScript中出现某些东西时,通常可以通过界面来解决它!

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

<强>类

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

<强>命名空间

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

<强>模块

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

<强>程序

程序是模块,类的集合。这基本上就是你用TypeScript编写的东西。

功能/方法

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

声明与var

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

例如,如果您使用定义var externalModule的外部脚本,则可以使用declare var externalModule来提示已经设置externalModule的TypeScript编译器。