TL;DR

あるプログラミング言語のソースコードを入力に取り、同じ言語か別の言語の、同等のソースコードを出力すること。これを行うツールをトランスパイラ(source-to-source compiler)と呼ぶ。

なぜ必要か

ブラウザなどの実行環境が直接は動かせない言語や、新しいバージョンの構文で書いたコードを、動かせる形に変えるために使う。TypeScript のドキュメントによると、型アノテーションは JavaScript の一部ではないので、TypeScript をそのまま実行できるブラウザやランタイムはない。そのため、TypeScript 固有のコードを取り除く・変換するコンパイラが必要になる。

仕組み

Wikipedia によると、従来のコンパイラは高水準の言語を低水準の言語に翻訳するが、トランスパイラはほぼ同じ抽象度の言語どうしを変換する。

TypeScript のコンパイラ tsc は、型アノテーションを消し、新しい ECMAScript の構文を古いバージョンの構文に書き換える。新しいバージョンから古いバージョンへの変換をダウンレベリングと呼ぶ。たとえばテンプレート文字列は、ES5 向けには concat による文字列の連結に書き換えられる。

例

注意点

トランスパイルした後のコードは元のコードと見た目が変わるので、デバッグのときに元の位置と対応させるにはソースマップを使う。

関連

出典