当前位置: 首页 > 知识库问答 >
问题:

Typescript中接口和类的区别

诸葛砚文
2023-03-14

我需要为对后端服务器的HTTP请求创建某种类型(使用Angular 2),例如:},

"fields": {
  "project": {
      "id": "10000"
  },
  "summary": "something's wrong",
  "issuetype": {
      "id": "10000"
  },
  "assignee": {             // not neccesary required
      "name": "homer"
  },
  "reporter": {
      "name": "smithers"
  },
  "priority": {            // not neccesary required
      "id": "20000"
  }
}

我应该用什么来构建这些模型?谢谢!

共有1个答案

温智明
2023-03-14

首先,有一个明显的区别:语法。这是一个简单但需要理解的区别:接口属性可以以逗号或分号结尾,而类属性只能以分号结尾。有趣的是。关于何时使用和何时不使用的部分可能是主观的--这些是我给团队中的人的指导方针,但其他团队可能会有其他合理的理由。如果你的团队做的不同,请随意发表评论,我很想知道为什么。

接口:允许定义将在设计和编译时用于强类型的类型。它们可以“实现”或“扩展”,但不能实例化(您不能新建它们)。它们在向下传递到JS时被删除,这样它们就不占用空间,但是在运行时也不能对它们进行类型检查,所以您不能检查变量是否在运行时实现了特定的类型(例如Foo instanceof Bar),除非检查它所具有的属性:Interface type check with TypeScript。

何时使用接口:当您需要为一个对象创建属性和函数的契约时,请使用它们,该对象将在代码中的多个位置使用,尤其是多个文件或函数。此外,当您希望其他对象从这个基本属性集开始时,例如具有一个vehicle接口,多个类将其实现为特定类型的车辆,如Cartrakboat(例如类Car实现车辆)。

 类似资料:
  • 假设定义了以下类型: 现在,考虑以下方法来向该类型添加附加属性: 扩大 交叉口 这两种方法有什么区别? 而且,为了完整性和好奇心,还有其他方法可以产生类似的结果吗?

  • 在TypeScript中,当创建.d.ts源代码声明文件时,哪个更可取,为什么? 或 我能说出的区别是接口不能有静态方法,所以你必须为此使用一个类。两者都不产生任何JS输出,所以也许没关系?

  • 我发现他们有同样的限制。 正如我所发现的,这两者之间没有明显的区别,因为它们都实施了相同的限制。我唯一注意到的是继承和实现。 类只能扩展到单个基类 一个类可以实现多个接口。

  • 本文向大家介绍TypeScript 类接口,包括了TypeScript 类接口的使用技巧和注意事项,需要的朋友参考一下 示例 public在接口中声明变量和方法,以定义其他打字稿代码如何与之交互。 在这里,我们创建一个实现接口的类。 该示例说明如何创建一个接口ISampleClassInterface和一类SampleClass是implements接口。

  • TypeScript中的这些语句(与)之间有什么区别?