Type-level TypeScript
Keywords:
この記事はCAMPHOR- Advent Calendar 2017の21日目の記事です.
12月といえば,万人受けしなさそうなネタでブログを書いては「はてブが付かねえ」と文句を言う季節だが,今年もそういう方針で,TypeScriptでの型レヴェル計算について書く.型レヴェルでの自然数などが定義できると,リストに型レヴェルで長さを付けることができて,空リストの先頭の要素を取ろうとしてランタイムで落ちる,という悲劇が生じる可能性をコンパイル時に排除できてとても嬉しい*1.
なお,使用しているTypeScriptのヴァージョンは,少し古くて2.4.1である.これは,手元でたまたま2.6系のプロジェクトと2.4系のプロジェクトがあったのだが,2.6系だと型推論が停止しない(tscが"Maximum call stack size exceeded"で死ぬ)ことに気付き,悲しい気持ちになったからである.