【问题标题】:TypeScript: Interface vs Class vs Modules vs Program vs FunctionTypeScript:接口 vs 类 vs 模块 vs 程序 vs 函数
【发布时间】:2012-09-27 16:07:48
【问题描述】:

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

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

  1. 接口
  2. 模块
  3. 程序
  4. 函数。
  5. 声明与 var

有人可以简单地帮助了解什么时候应该使用上述哪一种吗?接口和类和C#版本一样吗?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    正如您在问题中提到的那样,我已使这些答案与 C# 匹配,但希望这些答案对从类似语言开始使用 TypeScript 的人也有用。

    界面

    TypeScript 中的界面类似于您在 C# 中遇到的那些。它是一种契约——如果你的某个类实现了一个接口,它承诺具有该接口记录的某些属性或方法。

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

    每当在 TypeScript 中看起来不可能的事情时,您通常都可以使用界面来解决它!

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

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

    命名空间

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

    模块

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

    计划

    程序是模块、类的集合。这本质上就是您使用 TypeScript 编写的内容。

    功能/方法

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

    声明与 var

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

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

    【讨论】:

    • 而且(与命名空间不同)模块也可以在类之外拥有自己的函数和变量。
    • 可能值得一提的是,接口也类似于 C# 委托,因为它们可以定义调用签名。
    • 在 typescript 1.5 中,模块替换为命名空间
    猜你喜欢
    • 2011-09-02
    • 2015-08-05
    • 2020-10-14
    • 2010-10-29
    • 2018-06-18
    • 1970-01-01
    • 2013-07-05
    相关资源
    最近更新 更多