TypeScript で enum を文字列に変換
TypeScriptでintをenum文字列にキャストする
TypeScriptでは、enum型を文字列型にキャストすることで、enumのメンバー名を取得することができます。この方法を使うと、数値型のenumを文字列として扱うことができます。
基本的な例
enum Color {
Red = 1,
Green = 2,
Blue = 3
}
let colorValue: Color = Color.Green;
let colorName: string = Color[colorValue]; // "Green"
Color[colorValue]
で、colorValue
に対応するenumメンバーの名前を取得し、colorName
変数に代入します。colorValue
変数にColor.Green
を代入します。Color
というenumを定義しています。
具体的な使い方
- enumのメンバーを関数のパラメータとして受け取る
function getColorName(color: Color): string { return Color[color]; }
- 条件文でenumのメンバーを比較する
if (colorName === "Green") { console.log("The color is green."); }
- enumのメンバー名を表示する
console.log("The color is " + Color[colorValue]);
注意点
- enumのメンバーの値が数値以外の場合は、キャストできません。
- enumのメンバー名を取得するには、
enum[value]
という形式を使用します。 - enumのメンバーは数値型であるため、直接文字列として比較することはできません。
enum Color {
Red = 1,
Green = 2,
Blue = 3
}
let colorValue: Color = Color.Green;
let colorName: string = Color[colorValue]; // "Green"
Mapオブジェクトを使用する
enum Color {
Red = 1,
Green = 2,
Blue = 3
}
const colorMap: Map<Color, string> = new Map([
[Color.Red, "Red"],
[Color.Green, "Green"],
[Color.Blue, "Blue"]
]);
let colorValue: Color = Color.Green;
let colorName: string = colorMap.get(colorValue); // "Green"
colorMap.get(colorValue)
で、colorValue
に対応する文字列を取得します。Map
オブジェクトを使用して、enumのメンバーと対応する文字列を関連付けます。
enum Color {
Red = 1,
Green = 2,
Blue = 3
}
const colorMap: { [key in Color]: string } = {
[Color.Red]: "Red",
[Color.Green]: "Green",
[Color.Blue]: "Blue"
};
let colorValue: Color = Color.Green;
let colorName: string = colorMap[colorValue]; // "Green"
関数を使用する
enum Color {
Red = 1,
Green = 2,
Blue = 3
}
function getColorName(color: Color): string {
switch (color) {
case Color.Red:
return "Red";
case Color.Green:
return "Green";
case Color.Blue:
return "Blue";
default:
re turn "Unknown";
}
}
let colorValue: Color = Color.Green;
let colorName: string = getColorName(colorValue); // "Green"
TypeScriptのenumの文字列型を使用する
enum Color {
Red = "Red",
Green = "Green",
Blue = "Blue"
}
let colorValue: Color = Color.Green;
let colorName: string = colorValue; // "Green"
- enumのメンバーを文字列型で定義することで、直接文字列として使用できます。
javascript angular typescript