类型别名
类型别名用来给一个类型起个新名字,其与接口很像。那么其与接口之间的区别是什么呢?
- type can't be re-opened to add new properties vs an interface which is always extendable
简单的例子
ts
type Name = string;
// 这里的类型是一个返回值为string的函数
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
if (typeof n === 'string') {
return n;
} else {
return n();
}
}
// 上面的写法和这种本质一样
function getName2(n: string | (() => string)): string {
if (typeof n === 'string') {
return n;
} else {
return n();
}
}上例中,我们使用 type 创建类型别名。
类型别名常用于联合类型。