Typescript中接口与类型的区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

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

interface X {
    a: number
    b: string
}

type X = {
    a: number
    b: string
}
提问于
用户回答回答于

根据TypeScript语言规范

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

规范继续提到:

接口类型与对象类型文字的别名类型有很多相似之处,但由于接口类型提供了更多的功能,因此他们通常更喜欢键入别名。例如,接口类型 interface Point { x: number; y: number; } 可以写成类型别名 type Point = { x: number; y: number; };

  • 接口可以在扩展或实现子句中命名,但对象类型文字的类型别名不能。
  • 一个接口可以有多个合并声明,但是一个对象类型文字的类型别名不能。

扫码关注云+社区