名前付き定数の集合を定義する
// ── enum: 名前付きの定数の集合 ──────────────────────────
enum Direction {
Up = 'UP',
Down = 'DOWN',
Left = 'LEFT',
Right = 'RIGHT',
}
// 型として使える(Direction 以外の文字列は渡せない)
function move(direction: Direction) {
console.log('移動:', direction);
}
move(Direction.Up); // 'UP'
// ── const enum: ビルド時にインライン展開(高速)──────
const enum Status {
Active = 'ACTIVE',
Inactive = 'INACTIVE',
Pending = 'PENDING',
}
const userStatus = Status.Active; // ビルド後は 'ACTIVE' に展開される
// ⚠️ TypeScript の enum は「as const」で代替されることも多い
// as const の方が JS に近く、シンプルな場合が多い
const DIRECTION = { Up: 'UP', Down: 'DOWN' } as const;
type DirectionType = typeof DIRECTION[keyof typeof DIRECTION]; // 'UP' | 'DOWN'const enumはバンドルサイズを削減するが外部モジュールで問題になる場合がある。近年はリテラルユニオン型が好まれる傾向にある。