これは TypeScript Advent Calendar 2020 の 20 日目の記事です。
こんにちわ、Matts966です。今回は型レベル計算でFluent APIを自動生成するtypelevelLRというプロジェクトに今年の初めあたりに出したプルリクエストがマージされないため、供養を行う記事です。
Fluent APIまたはFluent Interfaceとは、2005年にDDDで有名なEricEvansと『リファクタリング』などで知られるMartinFowlerによって提唱された(とWikipediaに書かれていた)概念で、メソッドチェーンによって簡単に記述できるDSLのようなAPIのことです。
特徴として、メソッドのレシーバがステートフルであることが挙げられます。例えば以下のJavaのコードのようにメソッド呼び出しによってバイト列を記述するコードが一例です。
java.nio.ByteBuffer
.allocate(10)
.put((byte)0)
Fluent APIを用いることで
といったメリットが得られます。