TypeScript列舉

TypeScript中擴充了JavaScript中沒有的enum功能,使得可以像C#的語言可以對特定的值,定義適當的名稱。

一、定義列舉

在TypeScript中,每個列舉的值為number類型(2.4開始支援string,在本篇並不講述)。

在列舉中,可以定義多個有意義的名稱,並且可以像C#一樣針對個別的列舉設定number類型的值,而未明確指定的列舉則由TypeScript自動產生。

enum Gender_0{//未設定列舉個別值
    Male, //預設為0
    Female, //預設為1
}

enum Gender_1{//設定列舉個別值
    Male = 1,
    Female = 2
}

二、有意義的賦值

既然每個列舉都有一個number的值,賦予有意義的列舉值,就可以利用JavaScript支援的「|」「&」運算。

enum Gender{
    Male   = 0b01,
    Female = 0b10,
    All    = 0b11
}
console.log((Gender.Male | Gender.Female) == Gender.All);

三、列舉與字串互轉

在一些情況我們必須將列舉轉換為字串表示,但列舉值為number類型,但我們可以從TypeScript產生的JavaScript程式碼中看出如何做到這點的方式。

var Gender;
(function (Gender) {
    Gender[Gender["Male"] = 0] = "Male";
    Gender[Gender["Female"] = 1] = "Female";
})(Gender || (Gender = {}));

上列程式中定義了Gender["Male"] = 0且Gender[0] = "Male",所以只要將列舉值直接至於列舉類型的索引子內即可取得對應的屬性名稱定義。

console.log(Gender[Gender.Male]);//"Male"