MicrosoftがTypeScript 1.6のベータをリリースした。これにはReactのサポートが含まれている。
プログラムマネージャのJonathan Turner氏は、ブログ記事「Announcing TypeScript 1.6 Beta: React/JSX, better error checking, and more」において、TypeScriptチームはDojo、Aurelia、Angularなどのチームと協力してきたが、Reactは「重要なライブラリ」だがTypeScript開発者にとって難しいところがあったと説明した。
Turner氏はこう言っている。
これはJSXのサポートが欠けているためでした。JSでDOMとネイティブコンポーネントを書くのに、JSXは人気のあるやり方です。Reactは日々のコードでJSXを多用します。残念ながら、JSXの構文は、すでにTypeScriptが使っているキャスト構文とコンフリクトします。
Turner氏は、バージョン1.6に新しい.tsxファイル拡張子を導入することで、「TypeScriptファイル内でJSXを使えるようにし、新しい「as」演算子をデフォルトのキャスト方法にします」と続けた。これにより、TypeScriptでReact/JSXを動かすための完全なサポートが追加される。
Hacker Newsにおける反応はまちまちだったが、大半はポジティブだった。ユーザのjschrfはこうコメントした。「TypeScriptのこうしたすばやい吸収は喜ばしいことで、Dojo 2.0やAngular 2.0といった巨大なフレームワークによる採用はすばらしいことです。でも、JSXが入り込んできたのは、ちょっと奇妙に感じずにはいられませんし、少し残念です。」
TheAnimusはこう答えた。「フロントエンドをReactJSにするのに時間をかけている組織の人にとって、これは非常に役立つでしょう。キャスト演算子が「as」になるという「訛り」は.tsxファイル内だけなので、うまく管理できるでしょう。」
TypeScript 1.6の改善には、オブジェクトチェッキングルールの更新も含まれる。代入時、オブジェクトはより厳重にマッチングする必要がある。Turner氏は次のような例をあげた。
var x: { foo: number };
x = { foo: 1, baz: 2 }; // エラー。プロパティ'baz'が余計だが、1.6より前だと捕捉されない
var y: { foo: number, bar?: number };
y = { foo: 1, baz: 2 }; // エラー。プロパティ'baz'が余計あるいはスペルミスだが、1.6より前だと捕捉されない
彼はこう言う。「フィールドがオプショナルだと、うっかりタイプミスしたフィールドを渡したり、リファクタリングで余計なフィールドが残るのを見逃しやすいです。この変更は、アーリーアダプターのコードにおいて、実際のバグを(何百とは言わないまでも)何十も見つけるのに役立っています。」
他にも1.6リリースの新しい機能には、クラス表現のサポートを追加したES6ジェネレータがある。機能の完全なリストについてはロードマップを参照してほしい。