解释TypeScript中的枚举
在进入 “枚举 “之前,有必要了解一下 typescript 中流行的关键字 “const”。当我们声明一个变量为 “const “时,我们不能改变分配给它的值。
所以,枚举只不过是这些常量数据类型的一个集合。我们可以在 “enum “关键字的帮助下创建enum。Enum是Enumerations的缩写,在enum下声明的每个常量变量都被称为该enum的成员。
在这篇文章中,我们将了解typescript中的枚举,它们的特点,以及枚举的主要类型。
TypeScript中枚举的特点
- Typecript中的枚举拥有一个令人惊讶的特点。如果我们不对枚举的成员变量赋予任何重要性,它们的索引值就是默认值。
-
枚举的每个成员都必须包含一个值。我们可以指定一个常数,或者也可以从一个函数中计算出一个值。如果上述情况都没有,枚举成员存储的是默认的常量值。
-
枚举成员也可以用常量表达式进行分配。typescript中的任何常量表达式都是在编译时而非运行时进行评估的。
-
Enums可以作为参数传递给函数,通过函数进行计算,并返回给函数。
-
typescript中的Enum支持反向映射的概念。通过反向映射,我们可以从其值中访问成员,从其索引成员中访问值。这个概念背后的想法是,枚举对象在内部以两种方式存储成员,即通过它的变量指代值和值指代枚举变量。由于typescript通常将代码转换为javascript,它支持反向映射。
-
字符串枚举不支持反向映射;在异质枚举中,只有数字枚举支持反向映射。
-
常量枚举类型在编译时被删除,并将被替换成它们的值。因此,常量枚举比普通枚举更快,减少了在编译时产生额外代码的复杂性。但是我们只能在const枚举中使用常量成员,而不能使用计算的成员。
枚举的类型
数值枚举
在这种类型的枚举中,枚举的成员被赋予数字值。数字枚举拥有自动递增的特性。例如,如果我们把数字5分配给枚举的第一个常量变量,那么下面的常量变量分配的值就会递增1,比如6分配给枚举的第二个成员,7分配给下一个,以此类推。
示例
在下面的例子中,我们已经创建了一个名为color的枚举类型。在color里面,我们创建了四个常量变量,名字分别是红、蓝、黄、粉。为了证明数字枚举的自动增量性质,我们为前两个常量变量设置了值,并将另外两个变量保留为默认值。让我们看看输出中的默认值。
编译时,它将生成以下JavaScript代码。
输出
上述代码将产生以下输出 –
正如用户在输出中所注意到的那样,以下的常量变量在蓝色之后被赋予了默认值,即递增1。
字符串枚举
IString枚举与数字枚举类似,只是字符串枚举的值是用字符串而不是数字分配的。字符串枚举不具有自动递增行为。
示例
在下面的例子中,我们已经创建了一个名为 “姓名 “的字符串类型的枚举。在创建的枚举下,我们声明了四个变量student1、student2、student3和student4。这些变量被分配为字符串字面。在字符串枚举类型中没有存储默认的字符串值,如果没有赋值,只有数字值被存储为默认值。
编译时,它将生成以下JavaScript代码。
输出
上述代码将产生以下输出 —
用户可以在输出中注意到,前三个枚举变量是字符串类型。因此,这是一个字符串类型的枚举。
异质性枚举
这是一个数字和字符串枚举的组合。也就是说,在这种类型的枚举中,我们既可以为其成员分配字符串值,也可以分配数字值。
示例
在下面的例子中,我们已经创建了一个枚举类型的学生。在这个学生里面有四个常量变量:name, roll_no, gender, and mob_no。姓名和性别是字面字符串类型,而roll_no和mob_no是数字值。
编译时,它将生成以下JavaScript代码。
输出
上述代码将产生以下输出 –
在这篇文章中,用户被介绍到了typescript的关键字 “enum”。它的特点和类别都得到了很好的解释,而且还分享了所讨论的每一种枚举类型的例子。