全3582文字

JavaScriptは、長い歴史を持ちながらも常に進化を続けている。最新動向を踏まえて筆者の個人的な見解を交えつつ、Q&A形式でJavaScriptにまつわる素朴な疑問に答える。

Q1:JavaScriptとTypeScriptのどちらから学習を始めた方がよいですか?

A1:どちらから始めてもよいと思いますが、どちらから始めても一長一短があります。

 Web開発の現場では、TypeScriptの重要性が日々増していますから、JavaScriptとTypeScriptの両方をマスターすることが必須でしょう。では、どちらから学習すれば効率的なのか、という質問ですね。

 改めて説明すると、TypeScriptは、JavaScriptの“スーパーセット”です。JavaScriptの内容をすべて含んだ上で、そこに言語名の通り、「データ型」=「type」の仕組み(静的型付け)を取り入れています。ですから、TypeScriptを習得していれば、容易にJavaScriptのプログラミングもできるはずです。

 それならば、「TypeScriptから学習を始めるのがよいのではないか」ということになりそうですが、TypeScriptをいきなり使いこなすのは、結構ハードルが高いのです。

 例えば、次のような変数宣言を考えます。

[画像のクリックで拡大表示]

 JavaScriptであれば、この変数msgに対して、次のように123を再代入するコードを記述しても、問題なく動作します。

[画像のクリックで拡大表示]

 これは、JavaScriptでは、変数のデータ型が柔軟に変化するからです。この例では、宣言時に文字列型だった変数msgのデータ型が、「msg = 123;」で数値型に変化しています。

 ところが、TypeScriptでは、この再代入するコードはコンパイルエラーになります。なぜなら、"こんにちは"という文字列を変数msgに代入した時点で、変数msgのデータ型は文字列型に固定され、変数msgには文字列以外を再代入できなくなるからです。123は数値型なので、文字列型の変数msgには再代入できません。

 変数のデータ型が途中で変わらない点が、TypeScriptの最大の特徴であり、JavaScriptとの最大の違いです。一般的に言って、変数のデータ型が途中で変わらず、異なるデータ型の値を入れようとするとコンパイルエラーで知らせてくれるTypeScriptの方が、JavaScriptよりもバグの少ない安全なプログラムを作成できます。

 このように、TypeScriptではデータ型を常に意識しなければならないわけですが、これをどのように評価するかで、この質問に対する回答が変わります。これを“わずらわしい”と考えるのであれば、JavaScriptから学習を始めた方がよいでしょう。一方、“面倒でも、最初からデータ型を意識することを習慣付けた方がよい”と考えるのであれば、TypeScriptから学習を始めるのがよいと思います。