これは TypeScript Advent Calendar 2020 の 20 日目の記事です。

こんにちわ、Matts966です。今回は型レベル計算でFluent APIを自動生成するtypelevelLRというプロジェクトに今年の初めあたりに出したプルリクエストがマージされないため、供養を行う記事です。

TL; DR

目次

  1. Fluent APIとは何か
  2. typelevelLRとは何か
  3. typelevelLRのゲスト言語にTypeScriptを追加した手順
  4. コード生成にかかる時間の評価

Fluent APIとは何か

Fluent APIまたはFluent Interfaceとは、2005年にDDDで有名なEricEvansと『リファクタリング』などで知られるMartinFowlerによって提唱された(とWikipediaに書かれていた)概念で、メソッドチェーンによって簡単に記述できるDSLのようなAPIのことです。

特徴として、メソッドのレシーバがステートフルであることが挙げられます。例えば以下のJavaのコードのようにメソッド呼び出しによってバイト列を記述するコードが一例です。

java.nio.ByteBuffer
				.allocate(10)
				.put((byte)0)

Fluent APIを用いることで

といったメリットが得られます。