2021年6月21日月曜日

denoが作成するcacheファイルを使ってTypeScriptをJavaScriptに変換する

denoはTypeScriptをJavaScriptに変換してから実行します。
その変換後のキャッシュファイルが必要になったので、抽出するプログラムを作成しました。



変換後のファイルが必要になった経緯


denoで動作するサーバプログラムはTypeScriptで書きたいです。
ブラウザ上で動作するアプリもTypeScriptで書きたいところですが、まだサポートされていません。
しかし、できればトランスパイラは使いたくないです。(denoもTSからJSに変換してからコンパイルしていますが、それはそういう仕様だからOK)
仕方がないのでブラウザ用のプログラムはJavaScriptで書きます。

denoでもブラウザでも必要になるような汎用的な関数がありました。
同じ関数をTypeScriptとJavaScriptの両方で書くのは避けたいです。
JavaScriptで書いて、型定義ファイルを作成してTypeScriptと混在させる選択肢も検討して色々試してみました。
しかし以下の問題がありました。
  • 型定義ファイルの書き方が分からない。
  • そもそもJavaScriptを使うために型定義ファイルを書く、というのはTypeScriptとJavaScriptの両方で同じ関数を書くのと変わらない気がする。

型定義ファイルについて試行錯誤している最中に「deno run」する際キャッシュファイル(JSファイル)が作成されているのを思い出しました。

手書きで型定義ファイルを作るよりdenoで作成されたJSファイルを利用する方が不一致リスクが低減できると思われます。

以上の理由により、以下のプログラムを作成しました。



変換プログラム





使用例


上の例では末尾のファイル名「common.ts」がJavascriptへの変換対象になっています。



実行結果





変換対象のファイルPathに「.js」を追加したPathに、変換後のファイルが抽出されます。



抽出されたjsファイルを使用するhtml



をedgeで読み込んだ結果



ちなみに「import」を含むtsファイルはjsファイルに変換してもエラーになってしまいます。



0 件のコメント:

コメントを投稿