TypeScript Enum パラメーター解説
TypeScript の Enum は、関連する値の集合を定義するための便利な方法です。これらの Enum 値は、関数のパラメーターとして使用することで、コードの型安全性と読みやすさを向上させることができます。
基本的な例
enum Color {
Red,
Green,
Blue
}
function paint(color: Color) {
console.log(`Painting with ${color}`);
}
paint(Color.Red); // Output: Painting with Red
この例では、Color
という Enum を定義し、paint
関数の color
パラメーターの型として使用しています。これにより、paint
関数に渡すことができる値は、Color
Enum のメンバーのいずれかに制限されます。
より複雑な例
enum Shape {
Circle,
Square,
Triangle
}
interface ShapeConfig {
shape: Shape;
color: Color;
}
function drawShape(config: ShapeConfig) {
switch (config.shape) {
case Shape.Circle:
console.log("Drawing a circle");
break;
case Shape.Square:
console.log("Drawing a square");
break;
case Shape.Triangle:
console.log("Drawing a triangle");
break;
}
}
const circleConfig: ShapeConfig = {
shape: Shape.Circle,
color: Color.Blue
};
drawShape(circleConfig);
この例では、ShapeConfig
インターフェースを使用して、shape
プロパティの型を Shape
Enum に設定しています。これにより、drawShape
関数は、Shape
Enum のメンバーのいずれかを含む ShapeConfig
オブジェクトを受け取ることができます。
利点
- コードの再利用性
Enum を定義しておくと、複数の場所で同じ値のセットを使用することができます。 - コードの読みやすさ
Enum を使用すると、コードがより明確で理解しやすくなります。 - 型安全性
Enum をパラメーターとして使用することで、誤った値が渡されるのを防ぎます。
enum Color {
Red,
Green,
Blue
}
function paint(color: Color) {
console.log(`Painting with ${color}`);
}
paint(Color.Red); // 出力: Painting with Red
解説
- Enum の定義
Color
という名前の Enum を定義します。この Enum はRed
,Green
,Blue
の 3 つの値を持ちます。 - 関数のパラメーター
paint
関数を定義し、color
パラメーターの型をColor
Enum に指定します。これにより、この関数に渡すことができる値はColor
Enum のメンバーのいずれかに制限されます。 - 関数呼び出し
paint
関数を呼び出し、Color.Red
を引数として渡します。
enum Shape {
Circle,
Square,
Triangle
}
interface ShapeConfig {
shape: Shape;
color: Color;
}
function drawShape(config: ShapeConfig) {
switch (config.shape) {
case Shape.Circle:
console.log("Drawing a circle");
break;
case Shape.Square:
console.log("Drawing a square");
break;
case Shape.Triangle:
console.log("Drawing a triangle");
break;
}
}
const circleConfig: ShapeConfig = {
shape: Shape.Circle,
color: Color.Blue
};
drawShape(circleConfig);
- Shape Enum の定義
Shape
Enum を定義し、Circle
,Square
,Triangle
の 3 つの値を持ちます。 - ShapeConfig インターフェース
ShapeConfig
インターフェースを定義し、shape
プロパティの型をShape
Enum に、color
プロパティの型をColor
Enum に指定します。 - drawShape 関数
drawShape
関数を定義し、ShapeConfig
型のconfig
パラメーターを受け取ります。この関数では、config.shape
の値に応じて異なる図形を描画します。 - circleConfig オブジェクト
circleConfig
オブジェクトを定義し、shape
プロパティにShape.Circle
、color
プロパティにColor.Blue
を設定します。 - 関数呼び出し
drawShape
関数を呼び出し、circleConfig
オブジェクトを渡します。
Enum の代わりに文字列型のパラメーターを使用することもできます。これは、より柔軟なアプローチですが、型安全性が低下する可能性があります。
function paint(color: string) {
console.log(`Painting with ${color}`);
}
paint("Red");
ユニオン型のパラメーター
ユニオン型を使用することで、複数の型を許容するパラメーターを定義できます。これにより、Enum のような制限された値のセットだけでなく、他の型も受け入れることができます。
type ColorType = "Red" | "Green" | "Blue";
function paint(color: ColorType) {
console.log(`Painting with ${color}`);
}
paint("Red");
ジェネリック型のパラメーター
ジェネリック型を使用することで、より柔軟な関数やクラスを定義できます。Enum をジェネリック型のパラメーターとして使用することで、さまざまな Enum を受け入れることができます。
function processEnum<T>(value: T) {
console.log(value);
}
processEnum(Color.Red);
processEnum(Shape.Circle);
選択のポイント
- ジェネリック型
ジェネリック型を使用すると、再利用可能なコードを定義できます。 - 柔軟性
文字列型やユニオン型を使用すると、より柔軟な入力を受け入れることができます。 - 型安全性
Enum を使用すると、型チェックにより誤った値の入力を防ぐことができます。
適切な方法の選択
適切な方法を選択するには、以下の点を考慮してください。
- コードの再利用性
再利用可能なコードを定義したい場合は、ジェネリック型を使用します。 - 必要な柔軟性
より柔軟な入力を受け入れる必要がある場合は、文字列型やユニオン型を使用します。 - 必要な型安全性
高い型安全性が必要な場合は、Enum を使用します。
enums typescript