TypeScript Enum 比較解説
TypeScript での Enum の比較方法
Enum は、定数のグループを定義する TypeScript のデータ型です。これらの定数は数値型または文字列型で定義されます。
Enum の比較は、通常、定数の値を比較することによって行われます。
値による比較
enum Color {
Red,
Green,
Blue
}
let color1 = Color.Red;
let color2 = Color.Green;
if (color1 === color2) {
console.log("Color1 and Color2 are equal.");
} else {
console.log("Color1 and Color2 are not equal.");
}
この例では、color1
と color2
の値が比較されます。===
演算子は、値だけでなく型も比較するため、異なる定数間の比較は false
になります。
文字列型 Enum の比較
文字列型 Enum の場合、文字列の値を直接比較できます。
enum Direction {
North = "north",
South = "south",
East = "east",
West = "west"
}
let direction1 = Direction.North;
let direction2 = Direction.South;
if (direction1 === direction2) {
console.log("Direction1 and Direction2 are equal.");
} else {
console.log("Direction1 and Direction2 are not equal.");
}
注意点
- 厳密な型比較を使用することで、誤った比較を防止できます。
- 文字列型 Enum の場合、定数は文字列の値で定義されます。そのため、文字列の値を直接比較します。
- 数値型 Enum の場合、定数は数値のインデックスで定義されます。そのため、数値による比較が有効です。
enum Color {
Red,
Green,
Blue
}
let color1 = Color.Red;
let color2 = Color.Green;
if (color1 === color2) {
console.log("Color1 and Color2 are equal.");
} else {
console.log("Color1 and Color2 are not equal.");
}
- 異なる定数間の比較なので、条件式は
false
となり、else
ブロックが実行されます。 ===
演算子を使用してcolor1
とcolor2
を比較しています。color1
とcolor2
という変数にそれぞれRed
とGreen
の値を代入しています。Red
,Green
,Blue
という定数を定義しています。Color
という名前の Enum を定義しています。
enum Direction {
North = "north",
South = "south",
East = "east",
West = "west"
}
let direction1 = Direction.North;
let direction2 = Direction.South;
if (direction1 === direction2) {
console.log("Direction1 and Direction2 are equal.");
} else {
console.log("Direction1 and Direction2 are not equal.");
}
===
演算子を使用してdirection1
とdirection2
を比較しています。direction1
とdirection2
という変数にそれぞれNorth
とSouth
の値を代入しています。North
,South
,East
,West
という定数を定義し、それぞれ文字列の値を割り当てています。Direction
という名前の文字列型 Enum を定義しています。
switch 文の使用
enum Color {
Red,
Green,
Blue
}
let color = Color.Green;
switch (color) {
case Color.Red:
console.log("Color is red.");
break;
case Color.Green:
console.log("Color is green.");
break;
case Color.Blue:
console.log("Color is blue.");
break ;
default:
console.log("Color is unknown.");
}
- 該当するケースが実行され、メッセージが出力されます。
switch
文を使用して、color
の値を各定数と比較します。
辞書オブジェクトの使用
enum Color {
Red,
Green,
Blue
}
const colorMap: { [key in Color]: string } = {
[Color.Red]: "Color is red.",
[Color.Green]: "Color is green.",
[Color.Blue]: "Color is blue."
};
let color = Color.Green;
console.log(colorMap[color]);
color
の値を使用して辞書オブジェクトにアクセスし、メッセージを取得します。- 辞書オブジェクトを作成し、各定数と対応するメッセージをマッピングします。
定数の値による比較
数値型 Enum の場合、定数の値を直接比較することもできます。
enum Color {
Red = 1,
Green = 2,
Blue = 3
}
let color = Color.Green;
if (color === 2) {
console.log("Color is green.");
}
- 定数の値を直接比較することで、条件式を評価します。
typescript enums compare