前置き
TypeScript で作っていたプロジェクトに、後付けで PureScript を追加しようとしたらかなり辛かった。
(わざわざ言語を混在させたい理由としては、型クラスや演算子オーバーロードを使いたい&既存のコードを全部書き直す暇はない、が挙げられる)
辛い理由としてはそもそもモジュールとバンドラーの周辺がまだ成熟していないというのもあるだろうが、 TypeScript 固有の理由として、 TypeScript コードから PureScript モジュールを読み込むための型定義が足りないという問題がある。
Stack Overflow を見ると、同じことで悩んでいる人がいた:
しかし、どの解決策もイマイチである。
コンパイル済みの PureScript を使うだけなら --allowJs
オプションという手もあるだろうが、せっかく型がある言語で書いたのだから、適切な型チェックがされて欲しい。PureScript のコンパイル時に TypeScript 用の型定義ファイル .d.ts
を出力させるようにはできないのか?
PureScript の GitHub Issues にも「.d.ts を生成させたい!」というトピックがあるが、特に動きがあるようには見えない。
コンパイラーにそういう機能がないならば、自分で作ってしまおう!ということで、作った。