编辑
2023-03-26
TypeScript
0
请注意,本文编写于 531 天前,最后修改于 515 天前,其中某些信息可能已经过时。

目录

说明
常见使用场景
Eg
注意点
两个接口中同一个属性有多个类型,冲突
同名属性的类型兼容
同名属性是非基本数据类型

说明

用于将多个类型合并为一个类型,它包含了所需的所有类型的特性,使用&定义交叉类型

常见使用场景

常用于将多个接口类型合并成一个类型,从而实现等同接口继承的效果,即合并接口类型

Eg

ts
// 交叉类型 interface A { a: number }; interface B { b: string }; type C = A & B let a:C = { a:110, b:"w" } console.log(a)

注意点

两个接口中同一个属性有多个类型,冲突

当两个接口中同一个属性有多个类型,如一个接口中name是number,另一个接口中name是string,使用交叉类型后,name就变为number和string两个原子类型的交叉类型,即never

交叉类型同属不同类冲突1

同名属性的类型兼容

当一个接口中name是string(number),另一个接口中name是字符串字面量类型(数字字面量类型),使用交叉类型后,name就是两者之中的子类型即字符串字面量类型(数字字面量类型)

交叉类型同属不同类冲突2

同名属性是非基本数据类型

ts
interface Admin { name: { usersName: string }; } //Employee接口 interface Employee { name: { id: number }; } //类型别名 交叉类型 type UnknownEmployee = Employee & Admin; let test: UnknownEmployee = { name: { id: 1, usersName: "咩啊" } } //正常,不报错

混入多个类型时,若存在相同的属性,且属性类型为非基本数据类型,则是可以成功合并

本文作者:RKLS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!