TypeScript 中将字符串转换为枚举
枚举类型是为变量预定义常量的数据类型。该变量必须在枚举中为其定义一个值。
本教程将讨论 Typescript 中枚举的概念。
Typescript 中的枚举数据类型
Typescript 允许用户使用枚举类型作为变量的数据类型。枚举的一个常见示例是月份的名称,用户必须选择一年中定义的月份。
Typescript 提供基于字符串和数字的枚举。
TypeScript 中的数字枚举
枚举是使用关键字 enum
定义的,顾名思义,数字枚举用于数值。
示例代码:
enum basicEnum {
a = 3,
b = 6,
c = 7,
}
console.log(basicEnum);
输出:
{
"3": "a",
"6": "b",
"7": "c",
"a": 3,
"b": 6,
"c": 7
}
这是一个简单的枚举类型实例。让我们再举一个例子。
例子:
enum basicEnum {
a = 3,
b,
c,
}
console.log(basicEnum);
输出:
{
"3": "a",
"4": "b",
"5": "c",
"a": 3,
"b": 4,
"c": 5
}
在上面的示例中,第一个变量 a
被声明,其余的从该初始化值递增 1。
如果用户未定义每个变量。然后这些值将从 0 开始,其余的将递增 1。
用户还可以获得枚举上的单个变量。
示例代码:
enum basicEnum {
a = 3,
b = 6,
c = 7,
}
console.log('The first enum variable a has a value = ' + basicEnum.a);
console.log('The second enum variable b has a value = ' + basicEnum.b);
console.log('The last enum variable c has a value = ' + basicEnum.c);
输出:
The first enum variable a has a value = 3
The second enum variable b has a value = 6
The last enum variable c has a value = 7
上面的示例显示了对枚举的每个变量的访问。
TypeScript 中基于字符串的枚举
基于字符串的枚举与基于数字的枚举操作相同,但每个变量都必须在基于字符串的枚举中初始化。如果变量需要为空,则必须将其声明为空字符串。
示例代码:
enum stringEnum {
a = "Hello",
b = "Bye",
c = "",
}
console.log(stringEnum);
输出:
{
"a": "Hello",
"b": "Bye",
"c": ""
}
上面的例子展示了基于字符串的枚举的使用。请注意如何为成员 c
定义一个空字符串。
如果用户未定义变量,则会引发错误。
示例代码:
enum stringEnum {
a = "Hello",
b = "Bye",
c,
}
console.log(stringEnum)
输出:
{
"a": "Hello",
"b": "Bye",
"c": undefined,
"undefined": "c"
}
注意输出 c
是未定义的。对于变量 c
枚举成员不返回未定义,它必须有一个初始化程序。
TypeScript 中的多个枚举
用户可以在 typescript 中定义多个枚举。这是保持数字和基于字符串的枚举分开的好习惯。
示例代码:
enum firstEnum {
a = "Hello",
b = "Bye",
c = "",
}
enum secondEnum {
x = 2,
y = 4,
z = 8,
}
console.log(firstEnum);
console.log(secondEnum);
输出:
{
"a": "Hello",
"b": "Bye",
"c": ""
}
{
"2": "x",
"4": "y",
"8": "z",
"x": 2,
"y": 4,
"z": 8
}
让我们再举一个例子来讨论枚举数据类型的错误使用。
示例代码:
enum badEnum {
a = "Hello",
b = 4,
}
console.log(badEnum);
输出:
{
"4": "b",
"a": "Hello",
"b": 4
}
在这里,它表明无论何时定义枚举,各个成员都必须具有相同的数据类型。尽管 typescript 不会引发错误,但以这种方式处理 enum 是一种不好的做法。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn