# 联合类型
- 表示取值可以为多种类型中的一种,但不能是定义中的其他类型
let v1: number | string;
v1 = 'hello'
v1 = 12
// v1 = false // error
1
2
3
4
5
6
2
3
4
5
6
# 访问联合类型的属性和方法
- 只能访问此联合类型的所有类型里共有的属性和方法
function fn1(v: string | number): number {
return v.length;
// error TS2339: Property 'length' does not exist on type 'string | number'. Property 'length' does not exist on type 'number'.
// 类型“string | number”上不存在属性“length”。类型“number”上不存在属性“length”
}
function fn2(v: number | string): string {
return v.toString();
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型