💭

TSがJSのスーパーセットであることの価値

2021/10/23に公開
2

ある言語Aがある言語Bのスーパーセットであるということは、言語Bで記述されたすべての文は言語Aとしてパースできることを意味する。

つまり、「TSがJSのスーパーセットである」という意味は、すべてのJavaScriptソースはTypeScriptのソースとしてパースできるということである。

ここで、「パースできる」とは「シンタックスエラーが起きない」という意味だ。

JSで書いたコードをTSのトランスパイラに読ませても、シンタックスエラーによりトランスパイルが失敗しない、ということだ。

逆に言えば、TSのツールだけを導入して、JSのコードをTSとしてトランスパイルしても大した意味はない。

TypeScriptの価値はシンタックスよりも型チェック、つまりタイプエラーのもたらす情報にある。

JSで書いたコードに自分の知識をアノテートし、発生する型エラーを直し始めて、ようやくTSを運用していると言える。

その際、インクリメンタルに型エラーを修正しながらJSのコードを移行できることが、TSがJSのスーパーセットであることの価値だ。

スーパーセットだからと言って、JSのコードをそのままTSとして扱うだけでは、TSの力をほとんど活用できないことに注意しなければいけない。

Discussion

YutaUraYutaUra

記事にはもちろん同意なのですが、僕が思うにいくつか
仰る内容には同意なのですが、いろいろあるAltJSは全く新しい構文であったり、既存のjsプロジェクトを移行しにくい問題があるのかなと思いました。
そういう点ではスーパーセットというのは、既存のプロジェクトをtsに移行するのを易しくするための言葉なのかなぁと...

ekodaekoda

おっしゃるとおり、移行が容易(インクリメンタルに型エラーを直していくことができる)のは大きな利点ですね。

タイトルと内容を少し変えてみました。