DartDay 9

js_facade_genを使ってDartのJavaScript interopを自動生成する

More than 1 year has passed since last update.

これはDart Advent Calendar9日目の記事です。

今回はDartからJavaScript APIを使うときに便利であるpkg/js用のライブラリをTypeScriptの型定義ファイルから自動生成してくれるツールjs_facade_genについて解説していきたいと思います。


JavaScript interopとjs_facade_genについて

Dartから既存のJavaScriptライブラリを利用する場合は、相互運用を簡単にするためにpkg/jsを利用する必要がありました。このpkg/jsを利用したライブラリを自作するのはすこし面倒です。そこで、TypeScriptの型定義ファイルからpkg/js用のライブラリを生成してしまおうということで作られたのがjs_facade_genです。

簡単に使い方を見ていきます。


js_facade_genの使い方


インストール

js_facade_genを利用するためには、Node.jsが必要です。Nodeが入っている事を確認したら、js_facade_genをnpmでインストールしましょう。

npm install -g dart_js_facade_gen


使い方

GitHubレポジトリのREADMEにも載っていますが一応。

dart_js_facade_gen  --destination=lib/ --basePath=/path/to/dtsfile/directory/ /path/to/dtsfile/directory/file.d.ts

--basePathで目的の型定義ファイルが保存されている場所を指定し、引数に型定義ファイルを渡します。


サンプル

chart.jsのDart版はjs_facade_genによって提供されているようです。

google/chartjs.dart: Dart API for Chart.js


おわりに

すこしコマンドラインのインターフェースが使いづらいということをのぞけば、かなり実用的に使えると思います。ただ、Promiseを利用しているライブラリを使うとなるとすこし面倒になる気がします……もうちょっと調査したら追記します。