TypeScriptのEnum型は複数の定数をグループ化する強力な機能です。開発現場でよく使用されるEnum型について、基本的な使い方から実践的な活用法まで解説します。

Enum型の基本

Enum型は以下のように定義します:

enum Direction {
  Up,
  Down,
  Left,
  Right
}

これにより、関連する定数をまとめて管理できます。デフォルトでは、最初の要素から0で番号が振られていきます。

数値の明示的な指定

Enumの各要素に明示的に数値を指定することもできます:

enum StatusCode {
  OK = 200,
  NotFound = 404,
  InternalServerError = 500
}

文字列Enum

TypeScript 2.4以降では、文字列をEnumの値として使用できます:

enum Color {
  Red = "RED",
  Green = "GREEN",
  Blue = "BLUE"
}

異なる型を混在させる

数値と文字列を混在させることも可能です:

enum Mixed {
  Id = 1,
  Name = "name",
  Active = true
}

const Enumの使用

パフォーマンスを最適化したい場合は、const enumを使用します:

const enum Constants {
  MaxLength = 100,
  DefaultValue = "default"
}

実践的な使用例

APIのエンドポイントを管理する例:

enum ApiEndpoints {
  Users = "/api/users",
  Products = "/api/products",
  Orders = "/api/orders"
}

// 使用例
fetch(ApiEndpoints.Users)

Enumのループ処理

Enumの値を列挙する方法:

enum Days {
  Monday,
  Tuesday,
  Wednesday
}

// 数値を取得
Object.values(Days).filter(x => !isNaN(Number(x)))

// キーを取得
Object.keys(Days).filter(x => isNaN(Number(x)))

型安全性の確保

Enumを使用することで、型安全性が向上します:

enum UserRole {
  Admin = "ADMIN",
  User = "USER"
}

function checkAccess(role: UserRole) {
  if (role === UserRole.Admin) {
    console.log("管理者権限があります");
  }
}

ベストプラクティス

1. 意味のある名前を使用する

2. 関連する値をグループ化する

3. 可能な限り`const enum`を使用する

4. 文字列Enumを使用して型安全性を高める

まとめ

Enum型は、関連する定数をグループ化し、コードの可読性と保守性を向上させる優れた機能です。適切に使用することで、より堅牢なTypeScriptアプリケーションを開発できます。

Enum型の使用はTypeScriptプログラミングの基本スキルの一つとなっています。実際のプロジェクトでも積極的に活用することをお勧めします。