【TS篇】type和interface的区别

449 阅读1分钟

1. 定义/使用范围方式

  • type:使用type关键字定义,为任何类型创建一个新的名字,不仅限于对象类型,还可以用于基本类型、联合类型、元组、交集等。
  • interface:使用interface关键字定义,专门用于定义对象的接口,包括对象的属性、方法等。尽管在某些情况再也可以用于描述函数。但是主要还是对象结构的定义

2. 继承方式不同

  • type:可以通过交叉类型(&)来实现类似继承的思想,但是本身不具有继承的语法,另外,type还可以继承interface,反之亦然
  • interface:通过extends关键字来实现继承,支持多继承,即一个接口可以继承多个接口,也可以继承多个type

3. 声明合并的支持

  • type:不支持声明合并,即如果同一类型名称定义多个type,将会导致导致重复定义的警告
  • interface:支持声明合并,即如果同一接口名称声明了多个interface,他们会合并成为一个接口

image.png

4. typeof的使用

  • type 语句中还可以使用typeof 获取实例的类型进行赋值

  • interface 不能使用typeof

    说明:typeof关键字主要用于获取一个值的运行时类型标签,但它并不直接与interface相关

5. 使用场景

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