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;
};