可以在初始化枚舉時對 Up 賦值,枚舉好處是給我們一種不可以修改的集合可以用來作爲配置選項,我們無法在隨後動態修改
enum Direction {
Up = 1,
Down,
Left,
Right,
}
這是枚舉編譯後的 js 文件,
編譯後的枚舉
var Direction;
(function (Direction) {
Direction[Direction["Up"] = 1] = "Up";
Direction[Direction["Down"] = 2] = "Down";
Direction[Direction["Left"] = 3] = "Left";
Direction[Direction["Right"] = 4] = "Right";
})(Direction || (Direction = {}));
var Direction;
(function (Direction) {
Direction[Direction["Up"] = 1] = "Up";
Direction[Direction["Down"] = 2] = "Down";
Direction[Direction["Left"] = 3] = "Left";
Direction[Direction["Right"] = 4] = "Right";
})(Direction || (Direction = {}));
Direction.OK = 1;
console.log(Direction.Up)
console.log(Direction.OK)
我們是可以爲 Direction 動態添加屬性。當我們調用 Direction.Up 發生了什麼?
Direction["Up"] = 1 這個不難理解
var obj = {};
// obj["Up"] = 1;
obj[obj["Up"] = 1]
console.log(obj.Up) //1
// obj["Up"] = 1;
obj[obj["Up"] = 1] = "Up"
console.log(obj.Up)
console.log(obj.Up = 1) //1
console.log(obj[1]) // Up
通過上面代碼解釋我們大家可能爲 typescript 如何實現 enum 有所瞭解了吧,大家可以在自己 js 項目這樣來定義您的枚舉結構。
無初始化的枚舉
也可以創建枚舉時不給初始值
enum Direction {
Up,
Down,
Left,
Right,
}
枚舉的調用
enum Response {
No = 0,
Yes = 1,
}
function respond(recipient: string, message: Response): void {
// ...
}
respond("Princess Caroline", Response.Yes)
調用枚舉也很簡單,就像調用對象屬性一樣簡單。
枚舉的表達式賦值
enum E{
A = getSomeValue(),
B // error! 'A' 是表達式初始化而不是固定值所以 'B' 需要初始化
}
function getSomeValue(){
return 1;
}
enum E{
A = getSomeValue(),
B = getSomeValue()
}
function getSomeValue(){
return 1;
}