【发布时间】:2012-09-27 16:07:48
【问题描述】:
我阅读了位于以下位置的 TypeScript 规范: http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf
但它让我对以下内容感到困惑:
- 接口
- 类
- 模块
- 程序
- 函数。
- 声明与 var
有人可以简单地帮助了解什么时候应该使用上述哪一种吗?接口和类和C#版本一样吗?
【问题讨论】:
标签: typescript
我阅读了位于以下位置的 TypeScript 规范: http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf
但它让我对以下内容感到困惑:
有人可以简单地帮助了解什么时候应该使用上述哪一种吗?接口和类和C#版本一样吗?
【问题讨论】:
标签: typescript
正如您在问题中提到的那样,我已使这些答案与 C# 匹配,但希望这些答案对从类似语言开始使用 TypeScript 的人也有用。
界面
TypeScript 中的界面类似于您在 C# 中遇到的那些。它是一种契约——如果你的某个类实现了一个接口,它承诺具有该接口记录的某些属性或方法。
在 TypeScript 中,一个接口可以从另一个接口继承来扩展它,也可以从一个类继承来捕获它的实现。
每当在 TypeScript 中看起来不可能的事情时,您通常都可以使用界面来解决它!
在 TypeScript 中,接口有广泛的用途。它们描述了一种结构,因此可以在任何使用类型的地方使用(即不仅可以在类中实现它们,还可以使用它们来键入变量、参数、返回值等)。
类
这与 C# 中类的概念非常相似。您可以从其他类继承来扩展或专门化行为。
命名空间
较新的命名空间关键字用于将一组代码置于有限范围内。这类似于 C# 命名空间。
模块
就 TypeScript 而言,模块比命名空间更好。模块(以前称为外部模块)是一个自包含的文件,不会向您的全局范围添加任何内容。您可以根据需要将模块加载到局部变量中。模块提供了一种组织代码和按需加载部件的好方法。使用模块时,最好避免使用命名空间。模块比命名空间更好。
计划
程序是模块、类的集合。这本质上就是您使用 TypeScript 编写的内容。
功能/方法
类包含方法,也可以编写不属于类的独立函数。
声明与 var
var 创建一个新变量。 declare 用于告诉 TypeScript 该变量已在别处创建。如果您使用declare,则不会向生成的 JavaScript 添加任何内容 - 它只是对编译器的提示。
例如,如果您使用定义 var externalModule 的外部脚本,您将使用 declare var externalModule 向 TypeScript 编译器提示 externalModule 已设置。
【讨论】: