1. 类型别名
type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(name: NameOrResolver): Name {
if (typeof name === 'string') {
return name;
} else {
return name();
}
}
上述示例中,使用type
创建类型别名,类型别名常用语联合类型。
2. 字符串字面量类型
type EventNames = 'click' | 'scroll' | 'mousemove' | 'rclick' ;
function handEvent(element: Element , e: EventNames){
//do something
console.log(e) ;
}
handEvent(document.getElementById('hello') , 'scroll') ;
//编译出错
handEvent(document.getElementById('world') , 'dbclick') ;
//编译错误
handEvent(document.getElementById('world') ,ype '"dbclick"' is not assignable to parameter of type 'EventNames'.
上述示例中,使用type
定义一个字符串字面量类型EventNames
,它只能取值定义的四种字符串中的一种。