Typescript:接口与types
这些语句(接口和types)有什么区别?
interface X { a: number b: string } type X = { a: number b: string }
根据TypeScript语言规范 :
与总是引入命名对象types的接口声明不同,types别名声明可以为任何types的types(包括基本types,联合types和交集types)引入一个名称。
规范继续提到:
接口types与对象types文字的别名types有很多相似之处,但是由于接口types提供了更多的function,所以他们通常更喜欢键入别名。 例如,接口types
interface Point { x: number; y: number; }
可以写成types别名
type Point = { x: number; y: number; };
但是,这样做意味着以下function会丢失:
- 一个接口可以在extends或implements子句中命名,但是一个对象typesliteral的types别名不能。
- 一个接口可以有多个合并的声明,但是一个对象types文字的types别名不能。
https://www.typescriptlang.org/docs/handbook/advanced-types.html
一个区别是接口创build一个在任何地方都使用的新名称。 types别名不会创build新名称 – 例如,错误消息不会使用别名。