TypeScript の列挙型
列挙型(Enum)は、関連する定数(変更不可能な変数)のグループを表す特別な「クラス」のようなものです。
TypeScriptの列挙型には、数値(Numeric)と文字列(String)の2つの種類があります。まずは数値列挙型から見ていきましょう。
1. 数値列挙型 - デフォルト設定 (Default)
デフォルトでは、列挙型は最初の値を 0 で初期化し、それ以降の値には順に 1 を加算していきます。
例
enum CardinalDirections {
North, // 0
East, // 1
South, // 2
West // 3
}
let currentDirection = CardinalDirections.North;
// 0 が出力されます
console.log(currentDirection);
// 'North' は有効な Enum ではないため、エラーになります
currentDirection = 'North'; // エラー: 型 '"North"' を型 'CardinalDirections' に割り当てることはできません。2. 数値列挙型 - 初期値の指定 (Initialized)
数値列挙型の最初の値に任意の数値を設定することができます。その場合、それ以降の値はその数値から自動的にインクリメント(加算)されます。
例
enum CardinalDirections {
North = 1,
East, // 2
South, // 3
West // 4
}
// 1 が出力されます
console.log(CardinalDirections.North);
// 4 が出力されます
console.log(CardinalDirections.West);3. 数値列挙型 - 全ての値を指定 (Fully Initialized)
すべての列挙型の値に対して、一意の数値を個別に割り当てることも可能です。この場合、値は自動的にインクリメントされません。
例
enum StatusCodes {
NotFound = 404,
Success = 200,
Accepted = 202,
BadRequest = 400
}
// 404 が出力されます
console.log(StatusCodes.NotFound);
// 200 が出力されます
console.log(StatusCodes.Success);4. 文字列列挙型 (String Enums)
列挙型には文字列(Strings)を含めることもできます。
文字列列挙型は、その可読性(Readability)とコードの意図が明確になるという理由から、数値列挙型よりも一般的に使用されます。
例
enum CardinalDirections {
North = 'North',
East = "East",
South = "South",
West = "West"
};
// "North" が出力されます
console.log(CardinalDirections.North);
// "West" が出力されます
console.log(CardinalDirections.West);数値列挙型とは異なり、文字列列挙型はコードを実行した際のログ出力が読みやすいため、デバッグ時や外部システムとの連携において非常に有用です。