前言
联合类型(Union Types)表示取值可以为多种类型中的一种。
简单案例
这里在定义a的时候,声明了number类型与string类型,所以允许a定义值为数值和字符。
let a: string | number = '1';a = '1';a //'1'
访问联合类型的属性和方法
在遇到联合类型时,我们需要根据类型推论去判断出它时什么类型,可以使用什么方法。
function Fn (name: string | number):number {return Number(name)}分析参数name,接收string和number函数返回值必须时number
let anything: string | boolean | numer;anything = '123';anything.length //3anything = 123;anything.length; //Property 'length' does not exist on type 'number'.分析变量anything定义类型为string,boolean,number在定义值的时候根据类型推论,会推出一个类型,那么只能使用当前类型的方法
测试用例
let debug:boolean = true;let a: string | number = 1;a = '2';let b: boolean | object = {name: 'along'}b = false;// 场景应用 参数联合类型 返回值必须是booleanfunction 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' }
