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