Microsoft は ジェネリックス利用等の新機能を含むTypeScript 0.9のリリースをアナウンスした。TypeScriptは型チェックと静的コード解析を組み込むことが可能であり、Microsoft の JavaScriptを大規模アプリケーション開発にも適用させる試みを表している。
新機能のハイライトは以下になる。
- TypeScriptに対し、需要の高いの機能であるジェネリックスがサポートされ、型チェックの改善でモダンなプログラミングが可能に
- 定数パラメーターによるオーバーロード
- クラスを直接インポートすることが可能な “export = “ 演算子のサポート
- 列挙型(Enum)のサポート
- TypeScript 0.9 – 言語の将来性のため再設計された。また、100k行以上のコードに対応するためにインクリメンタル・コンパイルをサポートし、CodePlexで160以上のエラーを修正したことを報告している。
TypeScript チームのメンバーである Anders Heljsberg氏, Steve Lucco氏, Luke Hoban氏が参加している興味深い ラウンドテーブルディスカッションがChannel 9 に投稿されている。 同ディスカッションでは、TypeScript 0.9 で追加された新機能についての考察がなされている。 Hoban氏は、TypeScriptがジェネリックスをサポートすることにより、プログラマが直接ジェネリックスを利用しない場合についてもメリットがある点について述べている。同メリットとは、ジェネリックスのサポートによりインテリセンスの性能やエラーチェック等の支援が改善される点だ。
Hejlsberg氏は以下のサンプルを利用して、TypeScript 0.8から0.9での変更点を実演した。
var a = [ “hello”, “world”, “….” ]
var n = a.map( s => s.length)
(n は数値型の配列)
TypeScript 0.8: s. <- インテリセンスは何も表示しない
TypeScript 0.9: s. <- インテリセンスは length プロパティも含めて補完する
また、Hejlsberg氏は TypeScript のジェネリックス実装がC#でなくJavaに似ている点について指摘している。 ジェネリックスは、TypeScript の目標の 1 つである読み取り可能なコードを生成するものだ。そのため、JavaScript の制約により、TypeScriptチームでは現時点で非同期の様な複雑すぎるコードを生成する機能は開発していない。(IcedCoffeeScript は、TypeScriptのコード生成アプローチで避けようとしていた例を示している) JavaScript自身がイテレータやジェネレータをサポートすれば、TypeScriptは非同期を可読性のあるコードとして生成可能になるだろう。JavaScriptが将来の更新により、非同期等の機能が利用可能になると考えられる。