TypeScript enum の使い方
TypeScript enum の使いかた
目次
enum の定義
連番の値を持った連想配列を生成する
enum Enum { A, // 0 B, // 1 C // 2 } // 値とキーを反転させたやつも持ってる console.log(Enum); // { '0': 'A', '1': 'B', '2': 'C', A: 0, B: 1, C: 2 } console.log(Enum[0], Enum[1], Enum[2]); // A, B, C
JavaScriptにトランスパイルすると以下のようになる
var Enum; (function (Enum) { Enum[Enum["A"] = 0] = "A"; Enum[Enum["B"] = 1] = "B"; Enum[Enum["C"] = 2] = "C"; })(Enum || (Enum = {}));
最初の値を指定するとその数値からの連番になる
enum Enum { A = 10, // 10 B, // 11 C // 12 } console.log(Enum); // { '10': 'A', '11': 'B', '12': 'C', A: 10, B: 11, C: 12 }
使用例
enum Weekday { Sun, Mon, Tue, Wed, Thu, Fri, Sat } let date = new Date(); let Y = date.getFullYear(); let m = date.getMonth() + 1; let d = date.getDate(); // getDay は 0 ~ 6 までの数値を返すので enum を使って曜日を文字にする let b = Weekday[date.getDay()]; let H = date.getHours(); let M = date.getMinutes() console.log(`${Y}/${m}/${d} (${b}) ${H}:${M}`); // 2021/3/16 (Tue) 21:00
enum をフラグとして使う
enum Flag { A = 1, // 1 B = 1 << 1, // 2 C = 1 << 2, // 4 D = 1 << 3 // 8 } console.log(Flag); // { '1': 'A', '2': 'B', '4': 'C', '8': 'D', A: 1, B: 2, C: 4, D: 8 } let flags: Flag = 0; // A と C のフラグを ON にする flags = Flag.A | Flag.C; // 以下 A と C は 1 で、それ以外は 0 なので出力されない if (flags & Flag.A) { console.log("A flag is ON"); // ON } if (flags & Flag.B) { console.log("B flag is ON"); } if (flags & Flag.C) { console.log("C flag is ON"); // ON } if (flags & Flag.D) { console.log("D flag is ON"); } // フラグの削除 flags ^= Flag.A; if (flags & Flag.A) { console.log("A flag is ON"); } if (flags & ~Flag.A) { console.log("A flag is OFF"); // OFF } // DフラグをONにする flags |= Flag.D; if (flags & Flag.D) { console.log("D flag is ON"); // ON } // ONになってるフラグをOFFにする flags ^= Flag.C; flags ^= Flag.D; console.log(flags); // 0 // すべてのフラグをONにする flags = Flag.A | Flag.B | Flag.C | Flag.D; // すべてのフラグをONにした状態で flags を2進数にする console.log(flags.toString(2)); // 1111