TL;DR
あるプログラミング言語のソースコードを入力に取り、同じ言語か別の言語の、同等のソースコードを出力すること。これを行うツールをトランスパイラ(source-to-source compiler)と呼ぶ。
なぜ必要か
ブラウザなどの実行環境が直接は動かせない言語や、新しいバージョンの構文で書いたコードを、動かせる形に変えるために使う。TypeScript のドキュメントによると、型アノテーションは JavaScript の一部ではないので、TypeScript をそのまま実行できるブラウザやランタイムはない。そのため、TypeScript 固有のコードを取り除く・変換するコンパイラが必要になる。
仕組み
Wikipedia によると、従来のコンパイラは高水準の言語を低水準の言語に翻訳するが、トランスパイラはほぼ同じ抽象度の言語どうしを変換する。
TypeScript のコンパイラ tsc は、型アノテーションを消し、新しい ECMAScript の構文を古いバージョンの構文に書き換える。新しいバージョンから古いバージョンへの変換をダウンレベリングと呼ぶ。たとえばテンプレート文字列は、ES5 向けには concat による文字列の連結に書き換えられる。
例
- TypeScript から JavaScript への変換
- Babel による ECMAScript 2015 以降の JavaScript から ES5 への変換
- CoffeeScript から JavaScript への変換
注意点
トランスパイルした後のコードは元のコードと見た目が変わるので、デバッグのときに元の位置と対応させるにはソースマップを使う。