交叉类型
interface U1 {
name: number;
city: string;
}
interface U2 {
name: string;
age: number;
}
// 交叉类型
type UserType1 = U1 & U2;
const user1: UserType1 = { name: '张三', city: '北京', age: 18 }
// 整合U1 U2的所有属性(并集)
// 如果属性类型冲突了,那该属性类型是 never(函数死循环、抛出异常)
// 基础类型不能交叉
type T1 = number & string // never类型
- 多个类型合并为一个类型 T1 & T2 & T3
- 如果属性类型冲突了,则属性类型为never
- 基础类型无法交叉,会返回never
联合类型
interface U1 {
name: string;
city: string;
}
interface U2 {
name: string;
age: number;
}
function getUserInfo(): U1 | U2 {
return { name: '张三', age: 18 }
}
- 联合多个类型 T1 | T2 | T3
- 一种“或”的关系
- 基础类型可以联合