TypeScript:接口vs类与模块vs程序与函数
我阅读了TypeScript规范: http ://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf
然而,让我困惑以下几点:
- 接口
- 类
- 模块
- 程式
- function。
- 声明与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
已经设置。