TypeScriptで分岐の網羅性を保証する
パターンマッチを備えている言語では、コンパイル時に網羅性を検査してコンパイルエラーを発生させられる。 TypeScriptで実現する方法を記載する。
方法
satisfies
演算子を使う。
到達し得ない場所の型がnever
となることを利用して型チェックを行う。
type Hand = "rock" | "paper" | "scissors";
const judge = (hand: Hand): string => {
if (hand === "rock") {
return "勝ち";
} else if (hand === "paper") {
return "負け";
} else if (hand === "scissors") {
return "あいこ";
}
hand satisfies never;
};