联合类型合并
- 代码示例:
type TypeA = { name: string; };
type TypeB = { age: number; };
type UnionType = TypeA | TypeB;
- 特点:
- 一个值可以是
TypeA
类型或者TypeB
类型。
- 当访问联合类型的值时,只能访问两个类型共有的属性。如果要访问特定类型的属性,需要进行类型守卫(如
typeof
、instanceof
等)。
- 使用场景:
- 当一个变量可能有多种不同类型的值,但是这些类型之间没有必然的联系时使用。例如,一个函数可能返回两种不同类型的结果,一种是包含
name
属性的对象,另一种是包含age
属性的对象。
交叉类型合并
- 代码示例:
type TypeA = { name: string; };
type TypeB = { age: number; };
type IntersectionType = TypeA & TypeB;
- 特点:
- 合并后的类型同时具备
TypeA
和TypeB
的所有属性。
- 即一个值必须同时满足
TypeA
和TypeB
的类型定义。
- 使用场景:
- 当需要一个对象同时拥有多个不同类型的属性时使用。比如,定义一个用户对象,既要有姓名(
name
),又要有年龄(age
),就可以使用交叉类型将表示姓名的类型和表示年龄的类型合并。