交叉类型简介
TypeScript中的交叉类型是指将多个类型合并为一个类型。这使得我们可以将现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。
写这篇文章先问大家一个问题,如何让一个对象既有a类型约束,又有b类型约束?
如果你看了我这篇文章typescrip接口 interface详解,以及ts实现多态,
那么你就会很轻易的回答我定义接口使用继承,

但使用接口有一个问题,就是当两个接口里面有同名但是不同类型约束时,就会报错,如下

这个时候就得用上交叉类型了
交叉类型(&): 功能类似于接口继承,(extends),用于组合多个类型为一个类型(常用于对象类型).
如下

tips:当使用交叉类型后,新的类型C就同时具备了A和B的所有属性或方法约束,相当于
type C1 = { a: string, b: number }
我们很简单就能证明这个例子
如下图,根据鸭子类型理论,C就是C1

交叉类型与接口继承的区别
交叉类型(&)和接口继承(extends)的对比
- 相同点:都可以实现对象类型的组合
- 不同点:两种方式实现类型组合时,对于同名属性之间,处理类型冲突的方式不同
接口处理同名属性类型冲突: 不允许

交叉类型处同名属性类型冲突

当我们鼠标移上去可以看到














![[补题记录] Atcoder Beginner Contest 300(E)](https://img-blog.csdnimg.cn/672d848c3db243d5895d48328552cf6d.png)





