loading...
上次更新: 2025-09-08
數值型 enum 會被編譯成一個雙向映射的物件
// 編譯前 (TypeScript)
enum Direction {
Up, // 預設值為 0
Down, // 1
Left, // 2
Right, // 3
}// 編譯後
var Direction;
(function (Direction) {
Direction[Direction["Up"] = 0] = "Up";
Direction[Direction["Down"] = 1] = "Down";
Direction[Direction["Left"] = 2] = "Left";
Direction[Direction["Right"] = 3] = "Right";
})(Direction || (Direction = {}));會做單向映射(名稱 → 字串),無法由值反查名稱
// 編譯前 (TypeScript)
enum Status {
Success = "SUCCESS",
Failure = "FAILURE",
}// 編譯後 (JavaScript)
"use strict";
var Status;
(function (Status) {
Status["Success"] = "SUCCESS";
Status["Failure"] = "FAILURE";
})(Status || (Status = {}));TypeScript 編譯器在輸出時會完全移除這些 enum 定義 範例中,編譯器看到 Color.Green,直接用常數 2 取代,並不產生任何 enum 物件。
// 編譯前 (TypeScript)
const enum Color {
Red = 1,
Green,
Blue,
}
let c = Color.Green;// 編譯後 (JavaScript)
"use strict";
var c = 2;