TypeScript
概要
TypeScriptとは、米マイクロソフト(Microsoft)社が開発したJavaScript互換のプログラミング言語。JavaScriptを静的型付けの言語にすることができ、データ型にまつわるトラブルを軽減することができる。ソースコードの標準のファイル拡張子は「.ts」。Webブラウザなどで実行できる軽量なスクリプト言語の代表格であるJavaScriptに独自の拡張を付け加えた言語で、JavaScriptの完全な上位互換(スーパーセット)となっているため、JavaScriptプログラムはそのままTypeScriptプログラムとしても有効である。
実行環境
TypeScriptはそのまま実行するのではなく、「トランスパイラ」(トランスコンパイラ)と呼ばれる処理系でJavaScriptプログラムに変換(トランスパイル)し、これを実行環境に送り込んで実行する形を取る。このため、WebブラウザやNode.js、ASP.NETなど、JavaScriptが実行できる環境はそのままTypeScriptによる開発のターゲットとすることができる。
同社が提供している標準のトランスパイラ(tsc)自体もTypeScriptで開発されJavaScriptとして実行するようにできているため、様々なJavaScript環境で実行することができる。このプログラムはApacheライセンスに基づいてオープンソースソフトウェアとして公開されている。
静的型付け
TypeScriptの名称の由来ともなっている静的型付けはC言語などのように変数や定数、関数の引数や返り値のデータ型を明示的に宣言し、コンパイル時(トランスパイル時)にソースコード中で宣言通りに使われているか(数値型に文字列を代入するなどしていないか)検査する機能である。
独自の型アノテーションという記法を利用し、JavaScriptでは「var n=0,s="str",b=true;」のように宣言するところを「var n:number=0,s:string="str",b:boolean=true;」のように記述する。関数宣言もJavaScriptでは function(a,b){…} のようにするところを function(a:number,b:number):number{…}のように指定できる。通常のJavaScriptのように任意の型を受け付けたい場合は「any」型とすることもできる。
トランスパイラは指定されたスクリプトの関数やメソッドの宣言部分だけを抜き出した型宣言ファイル(拡張子部分が「.d.ts」となっている)を生成することができ、内部で利用されている関数などの引数や戻り値のデータ型の情報(シグネチャ)を処理系に伝達することができる。C言語などのヘッダファイル(.hファイル)のような役割を果たす。
拡張機能
TypeScriptはデータ型関連以外にも他のプログラミング言語に見られるような様々な機能を追加しており、すべてトランスパイラでJavaScriptに変換して実行することができる。
多くの拡張はJavaScriptの標準規格であるECMAScriptに提案された仕様を先取りで実装したものであるため、ECMAScriptの改訂に伴い単なる最新のJavaScript仕様となっている。このような拡張にはクラス、モジュール、アロー関数(ラムダ式)、デフォルト引数、let文、const文、for/ofループ、テンプレート文字列、Symbol、分割代入、async/awaitなどがある。
また、型アノテーションのようにECMAScriptとは無関係にTypeScript独自に拡張した仕様もあり、インターフェース、列挙型、タプル、共用体(union)、交差型(intersection)、ミックスイン(mixin)、ジェネリクス、名前空間、型エイリアスなどがある。
歴史
初版は2012年にマイクロソフトにより公開され、2013年からは同社のWindows向け統合開発環境のVisual Studioで標準サポートされるようになった。C#やVisual Basicなどと同じ標準の開発言語の一つという位置づけとなっている。
Eclipseやコードエディタなど他の開発環境でもTypeScript対応を追加するプラグインなどが公開され、トランスパイラがTypeScript自体で書かれていることもあり様々な環境での開発が可能となっている。2017年には米グーグル(Google)社内のソフトウェア開発における6番目の標準言語に採用され話題となった。