Typescript 中枚舉(上)

可以在初始化枚舉時對 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章