💭
TSがJSのスーパーセットであることの価値
ある言語Aがある言語Bのスーパーセットであるということは、言語Bで記述されたすべての文は言語Aとしてパースできることを意味する。
つまり、「TSがJSのスーパーセットである」という意味は、すべてのJavaScriptソースはTypeScriptのソースとしてパースできるということである。
ここで、「パースできる」とは「シンタックスエラーが起きない」という意味だ。
JSで書いたコードをTSのトランスパイラに読ませても、シンタックスエラーによりトランスパイルが失敗しない、ということだ。
逆に言えば、TSのツールだけを導入して、JSのコードをTSとしてトランスパイルしても大した意味はない。
TypeScriptの価値はシンタックスよりも型チェック、つまりタイプエラーのもたらす情報にある。
JSで書いたコードに自分の知識をアノテートし、発生する型エラーを直し始めて、ようやくTSを運用していると言える。
その際、インクリメンタルに型エラーを修正しながらJSのコードを移行できることが、TSがJSのスーパーセットであることの価値だ。
スーパーセットだからと言って、JSのコードをそのままTSとして扱うだけでは、TSの力をほとんど活用できないことに注意しなければいけない。
Discussion
記事にはもちろん同意なのですが、僕が思うにいくつか
仰る内容には同意なのですが、いろいろあるAltJSは全く新しい構文であったり、既存のjsプロジェクトを移行しにくい問題があるのかなと思いました。
そういう点ではスーパーセットというのは、既存のプロジェクトをtsに移行するのを易しくするための言葉なのかなぁと...
おっしゃるとおり、移行が容易(インクリメンタルに型エラーを直していくことができる)のは大きな利点ですね。
タイトルと内容を少し変えてみました。