TypeScript:接口vs类与模块vs程序与函数

我阅读了TypeScript规范: http ://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf

然而,让我困惑以下几点:

  1. 接口
  2. 模块
  3. 程式
  4. function。
  5. 声明与var

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

我已经使这些答案匹配C#,正如你在你的问题中提到的那样,但希望这些答案对于来自类似语言的TypeScript也是有用的。

接口

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

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

每当在TypeScript中看起来不可能的东西,你通常可以通过一个接口来解决它!

在TypeScript中,接口具有广泛的用途。 它们描述了一个结构,所以可以在你使用types的任何地方使用(即不仅仅是在类中实现它们,你可以使用它们来inputvariables,参数,返回值等等)。

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

命名空间

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

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

程序

一个程序是模块,类的集合。 这本质上是你用TypeScript写的东西。

function/方法

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

声明与var

var创build一个新的variables。 declare用于告诉TypeScriptvariables已经在别处创build了。 如果你使用declare ,那么没有任何东西被添加到生成的JavaScript中 – 这只是编译器的提示。

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