# 联合类型

  • 表示取值可以为多种类型中的一种,但不能是定义中的其他类型
let v1: number | string;

v1 = 'hello'
v1 = 12

// v1 = false // error
1
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
  • 联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型

参考-联合类型 (opens new window)