typescript中type与interface区别
🗒️typescript中type与interface区别
2023-10-6|最后更新: 2023-11-9
type
status
date
slug
summary
tags
category
icon
password
Blocking
Blocked by
top
URL
Sub-item
Parent item

总结

Interface 和 Type 核心的区别是 Type 不可在定义后重新添加内容,而 Interface 则总是可以扩展新内容。相比 Interface,Type 并没有实际创建一个新的类型,而是创建一个引用某个类型的名字。
如果有复杂的类型运算,那么没有其他选择只能使用 type;一般情况下,interface 灵活性比较高,便于扩充类型或自动合并,建议优先使用。
 

表示类型

  • Type 可以表示非对象类型。
  • Interface 只能表示对象类型。

扩展

  • Interface 支持继承其他接口,但extends 中的同名字段的类型必须是兼容的。
  • Type 可以使用联合类型,出现了同名字段且类型不同时,则类型一般是 never。

声明合并

  • Interface 可以声明合并,当同名的接口定义时,它们会自动合并。
  • Type 不支持声明合并,当重复定义别名时会报错。

扩展

  • Interface不能声明原始数据类型。
  • Type 可以扩展原始数据类型。

属性映射

  • Interface 的索引值必须是 string 或 number 类型,所以 Interface 并不支持动态生成属性。
  • Type 可以使用 in 关键字动态生成属性
 
gc垃圾回收机制八股文总结
Loading...