型レベルプログラミングの入門記事を書いたので社内で共有したところ、「型レベルプログラミングって何ですか?」という質問をいただきました。 「型とは何か」「TypeScriptの型システムがすごい」ということを伝えたのですが、「型レベルプログラミングとは?」を自分で整理しておきたいと思ったので今回の記事を書くことにしました。 型レベルプログラミングが初耳の方は、おおよそ次のことが気になるのかなと想像します。 何なの? 学ぶメリットは? どうやって学ぶの? 私はJava, Swiftなども経験していますが、前提はTypeScriptとしてそれぞれ考えを書いていきます。 何なの? 以下のように定義を考えました。 型レベルプログラミングは、型を対象としたプログラミングです。型はさまざまなデータの構造や性質、あるいは関数やクラスを表現することが出来ます。目的の型をどうすれば作れるのかを考えてコードで表