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

TypeScript:接口与类型

况承福
2023-03-14

这些语句(接口vs类型)有什么区别?

interface X {
    a: number
    b: string
}

type X = {
    a: number
    b: string
};

共有1个答案

支淮晨
2023-03-14

2021年3月更新:较新的TypeScript手册有一节接口vs.类型别名解释了差异。

原答案(2016年)

根据(现已存档的)TypeScript语言规范:

接口声明总是引入命名对象类型,与此不同,类型别名声明可以为任何类型引入名称,包括基元、联合和交集类型。

该规范接着提到:

接口类型与对象类型文字的类型别名有许多相似之处,但由于接口类型提供了更多的功能,因此通常首选它们而不是类型别名。例如,接口类型

interface Point {
    x: number;
    y: number;
}

可以写成类型别名

type Point = {
    x: number;
    y: number;
};

但是,这样做意味着丧失了以下功能:

  • <罢工> 接口可以在extends或implements子句中命名,但对象类型文本的类型别名不能 自TS 2.7起不再为真。
  • 接口可以有多个合并声明,但对象类型文字的类型别名不能。
 类似资料:
  • TypeScript中的这些语句(与)之间有什么区别?

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

  • 我最近遇到了这个问题,我不确定是使用接口还是类来定义特定的类型。 注意:这个问题不是问和之间的区别。 例如,给定这个类和接口 我将使用类或接口作为函数参数中的类型。 在我看来,两者都可以,但我更喜欢使用类来避免同步接口上的所有方法/属性。我认为接口只是一个类必须遵守的模板/契约。 但是,在我的例子中,大多数情况下,该类通常会添加更多不在接口定义中的方法/属性。 下面这个类就是一个很好的例子。 在这

  • 主要内容:TypeScript,JavaScript,联合类型和接口,TypeScript,JavaScript,接口和数组,实例,实例,TypeScript,接口继承,TypeScript,JavaScript,TypeScript,JavaScript接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。 TypeScript 接口定义如下: 实例 以下实例中,我们定义了一个接口 IPe

  • 我见过类似这样的相关问题,但它们都假设类和接口的区别在于类可以实例化,而接口不能。然而,以@types/google.maps为例,例如: 接口和类: 延伸其他对象 具有属性 具有方法/功能 无法从这些定义直接实例化 在google maps代码中的某个地方,实际上有一个类用于这里定义的< code >类和这里定义的< code >接口。看起来类定义是用户可以实例化的,而不是库可以内部实例化的(接