TypeScript 4.1 で再帰的な conditional type の定義に制限がなくなり (ref), 今後ますます再帰的な型定義をする / 触れることが多くなろうかと思います. 一方で TypeScript が型をインスタンス化する際の再帰の上限はそこそこ厳しく, ちょっと複雑なことをするとすぐに頭を打ってしまいます. 困りましたね. ということで裏技を使ってこの再帰上限を突破する方法を紹介します. 実は以前に型レベル Brainfuck インタプリタを実装した時にも使っていたのですが, あまり知られていないようなので改めて. ちなみにこちらの記事のように TypeScript 自体のコードに手を入れたりはしません. 以下使用している TypeScript のバージョンは 4.1.0-dev.20200911 です. 上限を突破する例 まずは実際に再帰的な型定義を行い, 上限を