列挙型(enum)
列挙型(enum
)は、関連する値の集合に名前を与えて定義する構文です。
数値でも文字列でも定義でき、コードの可読性と安全性を高めます。
📦 基本構文(数値ベースの enum)
enum Direction {
Up,
Down,
Left,
Right
}
const dir: Direction = Direction.Left;
console.log(dir); // 2
- 自動的に
から始まる数値が割り当てられる
- 各メンバーは
enum名.メンバー名
でアクセス
📝 文字列 enum
enum Status {
Loading = "loading",
Success = "success",
Error = "error"
}
const current: Status = Status.Success;
console.log(current); // "success"
- 明示的に文字列を割り当てることで可読性向上
- ログや通信プロトコルなどに向いている
🔄 enum の逆引き(数値 → 名前)
数値 enum は逆引き(値からキー名)も可能:
enum Color {
Red,
Green,
Blue
}
const value = Color.Green; // 1
const name = Color[1]; // "Green"
文字列 enum は逆引きできません(単方向)
🔐 const enum
(定数列挙型)
const enum KeyCode {
Enter = 13,
Escape = 27
}
const code = KeyCode.Enter;
- トランスパイル時に定数へインライン展開
- 実行時のオーバーヘッドを削減できる(高速&軽量)
⚠ enum の注意点
特性 | 説明 |
---|---|
自動連番 | 数値 enum は 0 始まりの連番になる(手動設定可) |
型安全性 | enum の型で限定できる(type Status = "A" | "B" に似る) |
バンドル肥大の懸念 | 通常の enum は JS に展開されるためサイズ増加に注意 |
Union Literal との比較 | 小規模用途では type + Union のほうが軽く済む |