我读了位于以下位置的TypeScript规范: http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf
但是让我对以下内容感到困惑:
有人可以简单地帮助理解上面哪一项应该用于何时?接口和类是否与C#版本相同?
答案 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编译器。