一步一步學習TypeScript(09.enums_列舉)
阿新 • • 發佈:2019-01-24
Enums
enum Color {
Red,
Green,
Blue
}
var colorValue = Color.Red;
colorValue = "2"; //錯誤, enum 值為number型別,並且是從0開始的,所以賦值string會得到一個錯誤
Enums 和 Numbers
TypeScript enum型別是基於number的,所以可以使用number型別變數對其賦值
enum Color {
Red,
Green,
Blue
}
var colorValue = Color.Red;
colorValue = 2 ; //OK, colorValue隱式轉為了number型別
Enums 內部原理
我們開啟之前編譯好的js檔案
var Color;
(function (Color) {
Color[Color["Red"] = 0] = "Red";
Color[Color["Green"] = 1] = "Green";
Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));
Color[Color["Red"] = 0] = "Red"
這行等價於
Color["Red"] = 0;
和Color[0] = "Red";
它的意思就是我們可以在TS中這麼使用enum:
enum Color {
Red,
Green,
Blue
}
console.log(Color["Red"]); // 0
console.log(Color[0]); // "Red"
console.log(Color[Color.Red]); // "Red" 因為 `Color.Red == 0`
可以定義兩個同名的enum,但是其中一個enum必需設定一個初始標識
enum Color {
Red,
Green,
Blue
}
enum Color {
DarkRed = 3 ,
DarkGreen,
DarkBlue
}
Const Enums
使用const修飾enum
const enum Color {
Red,
Green,
Blue
}
var value = Color.Red;
檢視其編譯後的js
var value = 0 /* Red */;
使程式碼量減小的同時在執行速度上也會有提高.