在 TypeScript 中,type和interface是用来定义类型的关键字,它们有一些区别和特点。
相同点
- 都可以用来定义对象、函数、联合类型等。
- 都可以用来拓展(extends)其他类型。
不同点
type可以声明基本类型别名、联合类型、交叉类型等复杂类型,而interface只能用来描述对象结构的类型 [1][2]。type可以使用typeof获取实例的类型进行赋值,而interface不支持 [2]。interface支持声明合并,可以将多个同名的接口进行合并,而type不支持声明合并 [1][2]。
总结
- 一般情况下,如果能用
interface实现,就优先使用interface,因为它扩展起来更方便,提示也更友好 [2]。适用于定义对象结构类型和需要进行声明合并的场景。 - 如果需要定义复杂类型,或者需要使用
typeof获取实例的类型进行赋值,就使用type[2]。
其它
- 元组类型是 TypeScript 中的一种特殊数据类型,与普通数组不同的是,元组中的每个元素可以具有不同的类型。
参考: