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 件のコメント:
コメントを投稿