異種混合列挙型 (Heterogeneous Enums)
CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部 — レッスン 55/73。
TypeScriptは、同じ宣言内に文字列と数値の両方のメンバーが混在するヘテロジニアス(heterogeneous)列挙型もサポートしています。
ヘテロジニアス列挙型を作成する方法は次のとおりです。
enum MixedEnum {
No = 0,
Yes = "YES",
Maybe = 1
}この例では、No と Maybe は数値メンバーであり、一方 Yes は文字列メンバーです。TypeScript はこの柔軟性を許容していますが、異種混合の列挙型(heterogeneous enums)が実際に使用されることは稀である点に注意することが重要です。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単文字列と数値が混在する、ResponseCode という名前のヘテロジニアス列挙型(heterogeneous enum)を作成してください。
Successを200で初期化Errorを"ERROR"で初期化NotFoundを404で初期化Timeoutを"TIMEOUT"で初期化
1つのパラメータを受け取る handleResponse という名前の関数を作成してください。
ResponseCode型のcode
この関数は以下の処理を行う必要があります。
- レスポンスコードを確認し、その値に基づいて異なるメッセージを出力します
- コードが
ResponseCode.Successの場合、"Request successful"を出力します - コードが
ResponseCode.Errorの場合、"General error occurred"を出力します - コードが
ResponseCode.NotFoundの場合、"Resource not found"を出力します - コードが
ResponseCode.Timeoutの場合、"Request timed out"を出力します - 戻り値の型を
voidにします
列挙型の値をデモンストレーションするために、4つの変数を作成してください。
successCodeはResponseCode型とし、ResponseCode.Successを代入しますerrorCodeはResponseCode型とし、ResponseCode.Errorを代入しますnotFoundCodeはResponseCode型とし、ResponseCode.NotFoundを代入しますtimeoutCodeはResponseCode型とし、ResponseCode.Timeoutを代入します
以下の出力を表示してください。
successCodeの値を出力しますerrorCodeの値を出力しますnotFoundCodeの値を出力しますtimeoutCodeの値を出力しますResponseCode.Successを引数にしてhandleResponseを呼び出しますerrorCodeを引数にしてhandleResponseを呼び出します- 数値の
404を引数にしてhandleResponseを呼び出します
チートシート
TypeScriptは、同じ宣言内に文字列メンバーと数値メンバーの両方を混在させることができる、ヘテロジニアス(混在型)列挙型をサポートしています:
enum MixedEnum {
No = 0,
Yes = "YES",
Maybe = 1
}ヘテロジニアス列挙型では、数値と文字列の値を混在させることができます。TypeScriptはこの柔軟性を許容していますが、実際の開発でヘテロジニアス列挙型が使用されることは稀です。
自分で試してみよう
// TODO: ここにコードを書いてください
// ResponseCode列挙型を作成します
// handleResponse関数を作成します
// デモンストレーション用の変数を作成します
// 必要な出力を表示しますこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Introduction To TypeScriptのすべてのレッスン
2基本の型
基本の型: str, num, boolean'any' 型: 脱出ハッチ'unknown' 型'null' と 'undef' の扱い型推論の実践明示的な型アノテーションまとめ:基本の型の演習5型:エイリアス、ユニオン型、インターセクション型
プリミティブ型の型エイリアスユニオン型 ('|')ユニオン型の扱い方リテラル型インターセクション型 ('&')型エイリアスの組み合わせまとめ:高度な型の組み合わせ