type与interface的区别

1. 可定义的类型不同

  • interface:接口,可以定义对象类型或者方法
  • type:可以声明任何类型。包括基础、联合、交叉类型

    2. 扩展性

  • interface:可以使用extends、implements扩展多个接口或类。

  • type:可以使用交叉类型或联合类型
  1. // type & interface
  2. interface Person { name: string }
  3. type User = { age: number } & Person
  4. type a = string | any[] // 联合类型只能使用共有的属性

3. 声明合并

  • interface:同名接口会合并
  • type:同名type会报错

    4. typeof

    type 可以使用 typeof 获取实例类型