blog.ryota-ka.me

Type-level TypeScript

この記事は CAMPHOR- Advent Calendar 2017 の21日目の記事です.

12月といえば,万人受けしなさそうなネタでブログを書いては「はてブが付かねえ」と文句を言う季節だが,今年もそういう方針で,TypeScript での型レヴェル計算について書く.型レヴェルでの自然数などが定義できると,リストに型レヴェルで長さを付けることができて,空リストの先頭の要素を取ろうとしてランタイムで落ちる,という悲劇が生じる可能性をコンパイル時に排除できてとても嬉しい*1

なお,使用している TypeScript のヴァージョンは,少し古くて 2.4.1 である.これは,手元でたまたま 2.6 系のプロジェクトと 2.4 系のプロジェクトがあったのだが,2.6 系だと型推論が停止しない (tsc が "Maximum call stack size exceeded" で死ぬ) ことに気付き,悲しい気持ちになったからである.

続きを読む