
TypeScriptのexhaustiveness checkをsatisfiesで簡単に書く
BRANK
みなさん、TypeScript書いてますか?ふと気づくと、もうTypeScript 1.0から数えても11年が経過しているんですね。筆者も2015年くらいから本格的に触り始めた組なので、そろそろTypeScript 10年選手を名乗ってもよさそうです。さて、これだけ長いことTypeScriptを触っていると、昔の文法を前提とした手癖というものも蓄積されていくものです。同僚と雑談していたところ、手癖を改めるべき便利なイディオムを教えてもらったので、備忘録として残しておきます。Before: 手癖で書いていたexhaustiveness checkTypeScriptには、exhaustiveness checkというテクニックがあります。これは、TypeScriptの型システムを利用して、switch文やif文でユニオン型やEnum型の全てのケースを網羅しているかをチェックする手法です。これにより、将来的に新しいケースが追加された場合にコンパイルエラーが発生し、見逃しを防ぐことができます。簡単なケースとして、次のようなコードを考えてみましょう。従来のexhaustiveness check(型チェックのみ)type Direction = 'up' 'down'; const move = (direction: Direction) => { switch (direction) { case 'up': console.log('Mo…
1 comments