typescript & 交叉类型

交叉类型简介

TypeScript中的交叉类型是指将多个类型合并为一个类型。这使得我们可以将现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。

写这篇文章先问大家一个问题,如何让一个对象既有a类型约束,又有b类型约束?
如果你看了我这篇文章typescrip接口 interface详解,以及ts实现多态,
那么你就会很轻易的回答我定义接口使用继承,
typescript & 交叉类型_第1张图片

但使用接口有一个问题,就是当两个接口里面有同名但是不同类型约束时,就会报错,如下
typescript & 交叉类型_第2张图片
这个时候就得用上交叉类型了
交叉类型(&): 功能类似于接口继承,(extends),用于组合多个类型为一个类型(常用于对象类型).
如下
typescript & 交叉类型_第3张图片
tips:当使用交叉类型后,新的类型C就同时具备了A和B的所有属性或方法约束,相当于

type C1 = { a: string, b: number }

我们很简单就能证明这个例子
如下图,根据鸭子类型理论,C就是C1
typescript & 交叉类型_第4张图片

交叉类型与接口继承的区别

交叉类型(&)和接口继承(extends)的对比

  • 相同点:都可以实现对象类型的组合
  • 不同点:两种方式实现类型组合时,对于同名属性之间,处理类型冲突的方式不同

接口处理同名属性类型冲突: 不允许
typescript & 交叉类型_第5张图片

交叉类型处同名属性类型冲突
typescript & 交叉类型_第6张图片
当我们鼠标移上去可以看到
typescript & 交叉类型_第7张图片

你可能感兴趣的:(typescript,typescript,javascript,前端,ts交叉类型,ts交叉类型详解,交叉类型与接口的区别,交叉类型与interface)