k-tokitoh

2024-12-29

トランスパイラがわからない

仕事では platform 領域の人におまかせしてしまっているし、個人でコードを書くときには雰囲気で設定しているので全然わからなかったが、1 ミリ理解したのでメモする。

色々間違っているかもしれない。

トランスパイラの役割

各種ツール

前提

ややこしい理由のひとつは、歴史的経緯によりそれぞれのツールの責務がオーバーラップしていること。

責務の分布について、こちらの記事が 2023-11 時点の見取り図としてわかりやすい。

一気に捉えようとすると混乱するので、トランスパイラについてのみ扱う。

トランスパイラであるライブラリ

いずれも tsconfig.json を設定ファイルとして利用する。

トランスパイル用のライブラリはパフォーマンス観点で選定し、型チェックは本家の tsc で行うのが主流。

トランスパイラを利用するライブラリ

next.js

vite

angular

tsconfig の lib, target

あるコードが「この環境では動くがこの環境では動かない」という事象には 2 種類の理由がある。

構文と標準ライブラリである。

例として es2022 の各 feature は以下のように分類される。

書かれたコードをより広範な環境で実行できるようにするためにトランスパイラが何をしてくれる/くれないか。

lib, target, サポート下限は以下の画像に示すトレードオフの中で定めていく。

polyfill / ponyfill

本筋とはズレるがついでに。

ある機能が一定以上のバージョンでのみ対応されているとき、そのバージョン以下の環境で利用可能にするための 2 つのアプローチ。