联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。表示取值可以为多种类型中的一种,使用 | 分隔每个类型。
注意:只能赋值指定的类型,如果赋值其它类型就会报错。
创建联合类型的语法格式如下:
Type1|Type2|Type3
//联合类型
var uniteType: string|number = 1122;
console.log('数字:'+uniteType);
uniteType = 'muzidigbig';
console.log('字符串:'+uniteType);
联合类型数组
//联合类型数组
var uniteTypeArr: number[]|string[];
uniteTypeArr = [1,2,4];
console.log('数字数组:'+uniteTypeArr);
uniteTypeArr = ['muzi','digbig',',muzidigbig'];
console.log('字符串数组:'+uniteTypeArr);
类型别名 type
使用 type
创建类型别名
类型别名用来给一个类型起个新名字,多用于联合类型:
type Name = string;
type GetName = () => string;
type NameOrGetter = Name | GetName;
function getName(n: NameOrGetter): Name {
if (typeof n === 'string') {
return n;
} else {
return n();
}
}
type 声明可以定义联合类型,基本类型等多种类型,而 interface 只能定义对象类型
字符串字面量类型
字符串字面量类型用来约束取值只能是某几个字符串中的一个。
type EventNames = 'click' | 'scroll' | 'mousemove';
function handleEvent(ele: Element, event: EventNames) {
// do something
}
handleEvent(document.getElementById('hello'), 'scroll'); // 没问题
handleEvent(document.getElementById('world'), 'dbclick'); // 报错,event 不能为 'dbclick'