列挙型(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 のほうが軽く済む

コメントを残す 0

Your email address will not be published. Required fields are marked *