联合与交叉类型
union联合类型
可以把“|”类比为 JavaScript 中的逻辑或 “||”,只不过前者表示可能的类型。
可以是多个指定类型中的一种
tsx
let age: number | string = 20;
1
交叉类型
在 TypeScript 中,还存在一种类似逻辑与行为的类型——交叉类型(Intersection Type),它可以把多个类型合并成一个类型,合并后的类型将拥有所有成员类型的特性。使用“&”操作符来声明交叉类型(并集)。
tsx
// 思考这里有一个值满足m的类型要求吗?
let m : string & number;
let zs: { name: string; age: number } & { height: number } = {
name: "张三",
age: 20,
height: 180,
};
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
联合、交叉组合
联合、交叉类型本身就可以直接组合使用,这就涉及 |、& 操作符的优先级问题。联合操作符 | 的优先级低于交叉操作符 &,同样,我们可以通过使用小括弧 () 来调整操作符的优先级,这个和js一样。
tsx
let m:{ id: number } & { name: string } | { id: string } & { name: number };
m = {
id: 1,
name: ''
}
m = {
id: '',
name: 1
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10