本文介绍了TypeScript:接口与类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这些语句(接口与类型)有什么区别?
What is the difference between these statements (interface vs type)?
interface X {
a: number
b: string
}
type X = {
a: number
b: string
};
推荐答案
2021 年 3 月更新:较新的 TypeScript 手册有一个部分 接口与类型别名,解释了这些差异.
Update March 2021: The newer TypeScript Handbook has a section Interfaces vs. Type Aliases which explains the differences.
原始答案 (2016)
与总是引入命名对象类型的接口声明不同,类型别名声明可以为任何类型的类型引入名称,包括原始类型、联合类型和交集类型.
规范继续提到:
接口类型与对象类型的类型别名有很多相似之处文字,但由于接口类型提供了更多的功能,它们是通常首选键入别名.例如接口类型
interface Point {
x: number;
y: number;
}
可以写成类型别名
type Point = {
x: number;
y: number;
};
然而,这样做意味着失去以下功能:
However, doing so means the following capabilities are lost:
- 自 TS 2.7 起不再适用.
- 一个接口可以有多个合并声明,但是一个类型别名对于对象类型文字不能.
- No longer true since TS 2.7.
- An interface can have multiple merged declarations, but a type alias for an object type literal cannot.
这篇关于TypeScript:接口与类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!