Typescript类型别名

类型别名

类型别名声明可以为typescript中任意类型命名。​​type​​是声明类型别名的关键字。​​AliasName​​表示类型别名的名称。​​Type​​表示类型别名关联的具体类型。类型的别名必须是合法的标识符。一般类型别名的首字母需要大写。而且不能使用Typescript内置的类型名作为类型别名的名称。类型别名引用的类型可以为任意类型,在类型别名中,也可以引用其他类型别名。类型别名不会创建一种新的类型,它只是给已有类型命名并直接引用该类型。在程序中,使用类型别名与直接该类型别名引用的类型是完全等价的。

type AliasName = Type;
type Str = string;
type Nr = number | bigint;

一般情况下,在类型别名声明中赋值运算符右侧的类型不允许引用当前定义的类型别名,因为类型别名对其引用的类型使用的及早及值的策略,而不是惰性求值的策略。如果类型别名引用了自身,那么解析类型别名的时候就会出现无限递归引用的问题。我们可以使用递归的类型别名的场景有:

若类型别名引用的类型为接口类型、对象类型字面量、函数类型字面量和构造函数类型字面量,则允许使用递归引用类型别名。

若类型别名引用的是数组类型或元组类型,则允许在元素类型中递归引用类型别名。

若类型别名引用的是泛型类或者泛型接口,则允许在类型参数中递归的引用类型别名。

type Nr = number | bigint;
// 接口
interface People {
age: number
}
interface Son extends People {
name: string
}
发表评论

相关文章