首页 > 其他分享 >Typescript类型别名

Typescript类型别名

时间:2022-10-20 21:32:04浏览次数:42  
标签:Typescript 递归 接口 别名 引用 类型 type

类型别名

类型别名声明可以为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
}

标签:Typescript,递归,接口,别名,引用,类型,type
From: https://blog.51cto.com/u_13349380/5780584

相关文章

  • Typescript中的类和成员
    ​类Typescript中我们定义类需要使用​​class​​关键字,类声明能够创建一个类,其中class是关键字,PeopleName表示类的名字。一般类名的首字母应该大写。与函数声明不同的是......
  • struct结构体类型
    struct结构体名{结构体所包含的变量或数组;};structstu{char*name;//姓名intnum;//学号intage;//年龄chargroup;//所在学习小组floats......
  • [Typescript] 59. Medium - InorderTraversal
    Implementthetypeversionofbinarytreeinordertraversal.Forexample:consttree1={val:1,left:null,right:{val:2,left:{val:......
  • 数据类型及运算
    C字符集1.大小写的英文字母:A--Z,a--z2.数字字符:0-93.专门符号(29个):!、#、%、^、&、*、_(下划线)+、=、-、~、<、>、/、\、|、‘“、  ;、    , ()   {}  ......
  • 三种常见的存储类型
    常见存储分为三种类型:DAS:直连式存储:Direct-AttachedStorage,简称DASSAN:存储区域网络:StorageAreaNetwork,简称SANNAS:网络附加存储:Network-AttachedStorage,简称NA......
  • SQL Server中,Numric,Decimal,Money三种字段类型的区别
     SQLServer中,Numric,Decimal,Money三种字段类型的区别 1,Numric,Decimal,Money三种字段类型,都是精确数据类型;前两个可以自己定义长度和小数位数,Money的定义相当于......
  • C#中实现类型对foreach的支持
    代码实现:首先创建用来遍历的类classCar{publicstringname;publicintage;}publicclassCars:IEnumerable{Car[]acrArr=newCar[4];......
  • 机器学习之特征提取(二)——字典类型特征提取(特征离散化)
    字典类型和CountVectorizer文本类型的特征基本相同,不同的是输出的结果类型,字典直接返回的键值对。以下代码用jupyter分块运行运行结果含义参考上一篇:https://www.cnblogs......
  • #打卡不停更#三方库移植之NAPI开发[2]C/C++与JS的数据类型转换
    在《三方库移植之NAPI开发[1]—HelloOpenHarmonyNAPI》通过一个HelloOpenHarmonyNAPI样例讲述了NPAI接口开发基础知识。本文在其基础上修改hellonapi.cpp文件,介绍JS类型......
  • 40 枚举类型
    01枚举如果一个变量只有几种可能的值,则可以定义为枚举类型,所谓“枚举”就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。枚举变量和其他数值型量不同,它......