1. 程式人生 > >一步一步學習TypeScript(09.enums_列舉)

一步一步學習TypeScript(09.enums_列舉)

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 */;

使程式碼量減小的同時在執行速度上也會有提高.