前言
联合类型(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' }