「JavaScript」をベースとする「改良された言語」は、これまでにも多数出ていますが、なかでも注目が高いのが、マイクロソフトが開発している「TypeScript」です。どのような特徴があるのか、簡単に紹介します。

■ 清水 美樹

https://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AETypeScript-2-I-O-BOOKS/dp/4777519929/ref=as_li_ss_tl?s=books&ie=UTF8&qid=1487310675&sr=1-3&linkCode=ll1&tag=kohgaku-22&linkId=654a2a535c2995344948d845324109d1

コンパイルで「JavaScript」に変換

 「TypeScript」が産まれた背景は、同社の提供する開発環境のユーザーから、「JavaScriptのこれまでの仕様では、大規模開発は難しい」という意見があったことです。この意見を受けて、マイクロソフトは、以下の手順でJavaScriptプログラムを作れるようにしました。


・「C#」などの大規模開発用言語に近い仕様でソースコードを書く。
・コンパイルすると、「JavaScript」になる。


 この「大規模開発用言語に近い言語仕様」が、「TypeScript」になります。

■ 「スクリプト」と逆の考え

 「TypeScript」は、他の多くの「スクリプト言語」と逆の考え方をもちます。
 これまで登場してきた「スクリプト言語」では、従来の言語の書き方を短くしたり、禁止事項を撤廃して、「書きやすさ」を追求しています。しかし、「TypeScript」では、実行エラー防止のために、むしろ記法の省略や紛らわしい表現を禁じています。

■ 「枯れたJavaScript」を生み出す

 JavaScript自身も、最近(2015年)の仕様「ECMA6」で「クラス」の記述を備えるなど大きく変わってきています。
 しかし、「TypeScript」は、最近のECMA仕様を先取りするようなコードを書きながら、コンパイルではむしろ古い「ECMA3」(2009年)のJavaScriptに変換し、多くのブラウザに対応するように配慮しています。

TypeScript2.0

 「TypeScript」がはじめて公開されたのは2012年の「バージョン0.8」です。その後は、順調にバージョンアップを重ね、「言語仕様」「コンパイラ」ともに改良されてきました。
 「言語仕様」では、「型」の追加や、並行して開発されている「ECMA」(JavaScriptの標準様式)の新しい仕様を、「TypeScript」でも書けるようにするなど、改良が重ねられています。

■ 「バージョン2」の特徴

 2016年9月に発表された「TypeScript2.0」では、特に処理の結果が「空」になったときの扱い方に注目しています。
 たとえば、「空」(null)と「未定義」(undefined)は値の表現でしかなかったのが、「型の名前」になりました。また、「never」という型が登場し、「例外エラー」を投げるときに、「never型の戻り値を返す」という表現ができるようになりました。他にも、変数の値の「型」を曖昧や暗黙で扱わないための、細かい規則が追加されています。

 なお、「バージョン1」で書いた内容が「バージョン2」でエラーになることは、ないと言っていいでしょう。前に書いたコードを簡単に使用不能にしないところは、マイクロソフトらしい手堅さです。