MicrosoftはTypeScript 1.4をリリースした。これは、同社のJavaScript言語の拡張の最新バージョンだ。ユニオン型のような新しい特徴が追加され、かつ、ECMAScript 6をターゲットにするモードも備えている。
ユニオン型は期待を集めていた特徴だ。JavaScriptのコードの場合、関数のパラメータは実行時にチェックされ、振る舞いが決まる。このような場合、TypeScriptのユニオン型が型チェックを改善する。リリースの発表には、次のような例が記載されている。
function f(x: number | number[]) {
if (typeof x === "number") {
return x + 10;
}
else {
// return sum of numbers
}
}
typeof
型のガードによって、条件に基づいたことなる型の推論ができる。FacebookのFlowもに多様な型のチェックをサポートしている。
DefinitelyTypedプロジェクトの貢献者であるJohn Reilly氏はTypeScript 1.4の前と後のangular-route.d.ts
の違いについて示している。
TypeScript 1.4以前は関数をオーバーロード可能でしたが、インターフェースのメンバをオーバーロードはできません。ということは、このようなプロパティをモデル化する唯一の方法は、すべてのシナリオに適合する最良の共通型を見つけることでした。つまり、常に任意型を使うことになります。この方法はうまくいきますが、関数を利用する側のコードに型の安全を保証しません。
ES6の機能であるlet
とconst
は1.4で使えるようになるが、ES6をターゲットにしてコンパイルした場合にのみ使える。将来的には、MicrosoftはこのサポートをES5ターゲットに広げるつもりだ。ES5モードでも動作する新しいES6の特徴として基本テンプレート文字列がサポートされている。これは、テンプレートをシングルクオートで囲む。
var width = 640;
var height = 480;
var areaDisplay = `The pixel count is ${width * height}`;
タグ付きテンプレート文字列はES6をターゲットにしたときに利用できる。
MicrosoftはTypeScript 2.0で、"ECMAScript 6の標準を完全にサポート"することを目標にしている。バージョン1.4は重要な更新だが、まだやるべきことは残されている。Kangax ES6 Compatibility Tableによれば、TypeScriptの互換性は8%で、ライバルに遅れをとっている。しかし、TypeScriptの目的は単にES6との互換性を担保するだけではない。6to5のような純粋なES6翻訳機とは違う目標を持っている。
TypeScriptロードマップによれば、次のリリース(バージョン1.5)ではfor..of
とデストラクタをサポートする予定。
TypeScript 1.4はVisual Studio 2015 CTP5、Visual Studio 2013、NPM、TypeScript playgroundで利用できる。