【总结比较】type 和 interface 的区别

2 阅读1分钟

在 TypeScript 中,typeinterface是用来定义类型的关键字,它们有一些区别和特点。

相同点

  • 都可以用来定义对象、函数、联合类型等。
  • 都可以用来拓展(extends)其他类型。

不同点

  • type可以声明基本类型别名、联合类型、交叉类型等复杂类型,而interface只能用来描述对象结构的类型 [1][2]
  • type可以使用typeof获取实例的类型进行赋值,而interface不支持 [2]
  • interface支持声明合并,可以将多个同名的接口进行合并,而type不支持声明合并 [1][2]

总结

  • 一般情况下,如果能用interface实现,就优先使用interface,因为它扩展起来更方便,提示也更友好 [2]。适用于定义对象结构类型和需要进行声明合并的场景。
  • 如果需要定义复杂类型,或者需要使用typeof获取实例的类型进行赋值,就使用type[2]

其它

  • 元组类型是 TypeScript 中的一种特殊数据类型,与普通数组不同的是,元组中的每个元素可以具有不同的类型。

参考:

  1. TypeScript 中 type 和 interface 有什么区别? - 知乎
  2. Typescript 中的 interface 和 type 到底有什么区别 - 掘金
  3. TS 篇-type 和 interface 的区别 - 掘金
  4. type 与 interface 的区别,你真的懂了吗? - 掘金
  5. 元组 · TypeScript 入门教程