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