Skip to content

前言

联合类型(Union Types)表示取值可以为多种类型中的一种。

简单案例

这里在定义a的时候,声明了number类型与string类型,所以允许a定义值为数值和字符。

js
let a: string | number = '1';

a = '1';

a	//'1'

访问联合类型的属性和方法

在遇到联合类型时,我们需要根据类型推论去判断出它时什么类型,可以使用什么方法。

js
function Fn (name: string | number):number {
    return Number(name)
}

分析
		参数name,接收string和number
    函数返回值必须时number
js
let anything: string | boolean | numer;

anything = '123';
anything.length //3

anything = 123;
anything.length; //Property 'length' does not exist on type 'number'.

分析
	变量anything定义类型为string,boolean,number
  在定义值的时候根据类型推论,会推出一个类型,那么只能使用当前类型的方法

测试用例

js
let debug:boolean = true;
let a: string | number = 1;
a = '2';

let b: boolean | object = {
  name: 'along'
}
b = false;

// 场景应用 参数联合类型 返回值必须是boolean
function getFun (a: string | number | boolean): boolean {
  return typeof(a) == 'string' || typeof(a) == 'number' || typeof(a) == 'boolean' ? true : false;
}

debug && console.log({
  a: `${a}:${typeof(a)}`,
  b: `${b}:${typeof(b)}`,
  fun: `${getFun(1)}:${typeof(getFun(1))}`,
});

----------------------------------------------------------------------------------------

{ a: '2:string', b: 'false:boolean', fun: 'true:boolean' }

参考

https://ts.xcatliu.com/basics/type-inference.html