MicrosoftがTypeScript 2.1をリリースした。不要なタイプ入力を削減し,ツールチェーンを合理化するための機能を数多く備えている。
これまでのリリースでは,async/await
をサポートはしていたが,対象がES2015のみに限定されていた。ES2015のコードは最新の環境でのみ動作するため,現在使用されているすべてのブラウザを対象として開発する場合には利用できない。すべてのブラウザで使用可能なコードに変換するためには,開発者のツールチェーンに(Babelなどの)トランスパイラを追加する必要があった。
2.1では,async/await
をES3/ES5レベルのコードとして出力することが可能になったので,Babelを使用する必要はなくなった。
Reactを使用する開発者は,TypeScriptにスプレッド演算子がないことから,コードを変更するか,あるいはBabelを使って処理する必要があった。Reactでは,プロパティをダウンレベルのコンポーネントに渡したり,状態を変更(mutate)したりする場合に,スプレッド演算子が頻繁に使用されている。2.1より前のバージョンでこれを行なうには,Babelを使って変換処理を行なう必要があった。スプレッド演算子の利用法は他にもある。これがなければ,オブジェクトの結合にはJavaScriptのobject.assign
機能を使用しなければならない。結果は同じだが,スプレッド演算子は必要なコード量を大幅に削減すると同時に,可読性も向上させる。
async/await
とスプレッド演算子は,Babelでもしばらく前から使用可能だった。TypeScriptのプログラムマネージャであるDaniel Rosenwasser氏によると,サポートが2.1まで遅れたのは,型システムが今後も期待どおり動作することを確認するためだ。
TypeScriptに機能を実装する場合,それが適切なものか,パフォーマンス特性が妥当であるかを確認するために,私たちは多くの時間を割いています。オブジェクトのrest/spreadを使用する時,エラーが発生した場合にユーザをイライラさせるようなものを提供したくはありませんでした。async/awaitに関しては,出力パイプラインを全面的に書き直す必要がありました。出力内容と出力時間の両方において,これまでと同等であることが必要だったからです。その甲斐あって,TypeScriptは依然として極めて高速です。
TypeScript 2.1の発表の中でRosenwasser氏は他にも,keyof
演算子やインポートの簡略化,マップドタイプなどの新機能を紹介している。Rosenwasser氏はマップドタイプについて,既存のオブジェクトとプロパティがほぼ同じものをまったく新たに作る必要がなくなることから,“間違いなくTypeScriptで最も興味深い機能”だとしている。また,インポートのエクスペリエンス改善に関しては,ソリューションがより柔軟になると述べている。
信頼性をより高める必要があるという判断から,TypeScript 2.1では,インストールされているパッケージはすべて使用できるようになります。
TypeScript 2.1は一般的なチャネルすべてから入手可能だ。
この記事を評価
- 編集者評
- 編集長アクション