TypeScript 文字列 enum 解説
TypeScriptで文字列値を持つenumを作成する
TypeScriptでは、enumを使用して、一連の定数を定義することができます。これらの定数は、通常は数値で表現されますが、文字列値を持つenumも作成することができます。
基本的な構文
enum MyEnum {
Value1 = "value1",
Value2 = "value2",
Value3 = "value3"
}
この例では、MyEnum
という名前のenumを作成しています。このenumには、Value1
、Value2
、Value3
という3つの定数が含まれています。これらの定数にはそれぞれ、文字列値が割り当てられています。
使用方法
let myValue: MyEnum = MyEnum.Value1;
console.log(myValue); // 出力: "value1"
このように、enumの定数を変数に割り当てることができます。変数の値は、定数に割り当てられている文字列になります。
文字列値の利点
文字列値を持つenumを使用する利点は次のとおりです。
- デバッグ
文字列値は、デバッグ時にエラーメッセージやログ出力でより明確な情報を提供することができます。 - 柔軟性
文字列値を使用することで、定数の名前と値を自由に設定することができます。 - 読みやすさ
文字列値は、数値よりも読みやすいため、コードの理解が容易になります。
注意点
- enumの定数は、通常は定数として扱われますが、必要に応じて変更することもできます。
- 文字列値を持つenumでは、数値インデックスは使用できません。
TypeScript 文字列 enum 解説とコード例
文字列 enum の基本
TypeScript の文字列 enum は、名前付き定数の集合であり、各定数は文字列値と関連付けられています。これにより、コードの可読性とメンテナンス性を向上させることができます。
enum MyEnum {
Value1 = "value1",
Value2 = "value2",
Value3 = "value3"
}
- "value1", "value2", "value3"
各定数の文字列値です。 - Value1, Value2, Value3
enum 内の定数名です。 - MyEnum
enum の名前です。 - enum キーワード
enum を定義するためのキーワードです。
let myValue: MyEnum = MyEnum.Value1;
console.log(myValue); // 出力: "value1"
console.log
でmyValue
の値を出力します。myValue
変数にMyEnum.Value1
定数を割り当てます。
- 可読性
文字列値は数値よりも理解しやすいので、コードの可読性が向上します。
具体的な使用例
色の定義
enum Color {
Red = "red",
Green = "green",
Blue = "blue"
}
function getColorName(color: Color): string {
switch (color) {
case Color.Red:
return "赤";
case Color.Green:
return "緑";
case Color.Blue:
return "青";
default:
return "不明な色";
}
}
console.log(getColorName(Color.Red)); // 出力: "赤"
HTTP ステータスコードの定義
enum HttpStatusCode {
OK = 200,
NotFound = 404,
InternalServerError = 500
}
function handleStatusCode(statusCode: HttpStatusCode) {
switch (statusCode) {
case HttpStatusCode.OK:
console.log("リクエストが成功しました");
break;
case HttpStatusCode.NotFound:
console.log("リソースが見つかりません");
break;
case HttpStatusCode.InternalServerError:
console.log("サーバーエラーが発生しました");
break;
default:
console.log("不明なステータスコード");
}
}
handleStatusCode(HttpStatusCode.NotFound);
オブジェクトリテラル
オブジェクトリテラルを使用することで、文字列値を持つ定数を定義することができます。
const MyEnum = {
Value1: "value1",
Value2: "value2",
Value3: "value3"
};
Map
Map オブジェクトを使用することで、文字列キーと文字列値のペアを保存することができます。
const MyEnum = new Map([
["Value1", "value1"],
["Value2", "value2"],
["Value3", "value3"]
]);
定数
定数を使用して文字列値を定義することもできます。
const Value1 = "value1";
const Value2 = "value2";
const Value3 = "value3";
文字列型
type MyEnum = "value1" | "value2" | "value3";
const enum
TypeScript 4.1 以降では、const enum
を使用することで、コンパイル時に定数が削除され、より効率的なコードが生成されます。
const enum MyEnum {
Value1 = "value1",
Value2 = "value2",
Value3 = "value3"
}
選択基準
これらの方法の選択は、プロジェクトの要件や好みによって異なります。以下は、各方法の利点と欠点を考慮する際のポイントです:
- 型安全
文字列型を使用することで、型安全性を確保することができます。 - 柔軟性
Map は、キーと値を動的に追加または削除できるため、柔軟性が高いです。 - 効率性
const enum
は、コンパイル時に定数が削除されるため、効率が良いです。 - 可読性
オブジェクトリテラルと Map は、文字列 enum と同様に可読性が高いです。
typescript enums