'never' 型
CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部。レッスン 70/73。
never型は、決して発生しない値を表します。最初は混乱するかもしれませんが、コード内の特定のシナリオを考えると、実は非常に論理的です。
never型は、正常に値を返さない関数に最も一般的に使用されます。
これには、常にエラーをスローする関数や、無限ループを含む関数が含まれます。
function throwError(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
// このループは決して終わりません
}
}意味のある値を返さないことを示す void とは異なり、never は関数がその終点に決して到達しないことを示します。実行は、エラーがスローされて停止するか、あるいは無期限に継続します。
チャレンジ
簡単常にエラーをスローし、正常に値を返さないことで never 戻り値の型を実証する、throwError という名前の関数を作成してください。
この関数は以下の条件を満たす必要があります:
string型のパラメータmessageを受け取る- 提供されたメッセージで新しい
Errorをスローする - 明示的な戻り値の型として
neverを持つ
次に、以下の処理を行う handleOperation という名前の2つ目の関数を作成してください:
string型のoperationとnumber型のvalueの2つのパラメータを受け取る- operation が
"double"の場合はvalue * 2を返す - operation が
"half"の場合はvalue / 2を返す - それ以外の operation の場合は、メッセージ
"Invalid operation: [operation]"を指定してthrowErrorを呼び出す - 明示的な戻り値の型として
numberを持つ
以下の操作で関数をテストしてください:
handleOperation("double", 5)を呼び出し、結果を出力するhandleOperation("half", 8)を呼び出し、結果を出力するhandleOperation("triple", 3)を呼び出し、結果を出力する(これはエラーをスローします)
追加のテストケースを作成してください:
handleOperation("double", 15)を呼び出し、結果を出力するhandleOperation("half", 20)を呼び出し、結果を出力する
自分で試してみよう
// TODO: ここにコードを書いてください
// 戻り値の型がneverであるthrowError関数を作成します
// 戻り値の型がnumberであるhandleOperation関数を作成します
// try-catchブロックを使用して関数をテストします
try {
console.log(handleOperation("double", 5));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("half", 8));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("triple", 3));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("double", 15));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("half", 20));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Introduction To TypeScriptのすべてのレッスン
2基本の型
基本の型: str, num, boolean'any' 型: 脱出ハッチ'unknown' 型'null' と 'undef' の扱い型推論の実践明示的な型アノテーションまとめ:基本の型の演習5型:エイリアス、ユニオン型、インターセクション型
プリミティブ型の型エイリアスユニオン型 ('|')ユニオン型の扱い方リテラル型インターセクション型 ('&')型エイリアスの組み合わせまとめ:高度な型の組み合わせ自分で練習してみよう: JavaScriptオンラインコンパイラ