TypeScriptチームはTypeScript 3.9のリリースを発表した。これには、Promise.allによる推論の改善、コンパイラーのチェック速度、@ts-expect-error
コメント、TypeScript 4.0メジャーバージョン前の最終となる他が含まれる。
TypeScript 3.9は、Promise.all
およびPromise.race
に対するTypeScript 3.7の更新された型宣言によって導入された問題を修正する。TypeScriptチームは、JavaScriptでアンラップするPromiseを正確にモデル化するために、新しいawaited
型を含めることを望んでいた。TypeScriptチームのプログラムマネージャーであるDaniel Rosenwasser氏が説明する:
私たちは当初、TypeScript 3.9で
awaited
が出荷されるのを予想していましたが、既存のコードベースで初期のTypeScriptビルドを実行していたため、この機能をすべての人にスムーズに展開するには、機能をさらに設計する必要があることに気付きました。そのため、自信がつくまで、この機能をメインブランチから削除することにしました。この機能についてはさらに実験を行いますが、このリリースの一部として出荷することはありません。
TypeScript 3.9リリースでは、material-uiやstyled-componentsなどのパッケージにあるパターンのコンパイラ速度も向上している。この改善は、大きな共用体、共通部分、条件付き、マップされた型を含むコードパスを最適化することから生じている。
Visual Studio Codeチームからのフィードバックに基づくと、大規模なプロジェクトの場合、ファイルの名前を変更してすべての関連するインポートステートメントを更新するには5〜10秒かかる。TypeScript 3.9では、ファイルルックアップ用のコンパイラと言語サービスキャッシュの内部が変更され、この時間を大幅に短縮した。
TypeScriptを使用してテストを作成する際の1つの課題は、意図的にエラーが予測されるコードのブロックを作成することであった。これまで開発者は@ts-ignore
コメントを使用して、コンパイラが関連するコードブロックで失敗しないようにする必要があった。TypeScript 3.9では、@ts-expect-error
コメントが導入され、コードのブロックでエラーが発生することを予測させるだけでなく、コメント化されたコードのブロックでエラーが発生しない場合にはコンパイラーが警告する。
TypeScript 3.9リリースには、その他多数のマイナーな追加、バグ修正、およびエディターエクスペリエンスの改善が含まれている。これらの改善の一部として、いくつかの重大な変更が追加された:
- optionalの連鎖とnon-nullのアサーションの差異解析
}
と>
をJSX/TSXテキスト文字として無効に- intersectionとoptionalのプロパティのより厳密なチェック
- discriminantプロパティによるintersectionの削減
- ゲッター/セッターの列挙をできなくした
any
を拡張した型パラメーターは、もはやany
のようには機能しないexport *
は常に保持される
これらの重大な変更の詳細については、TypeScript 3.9リリースを参照すること。
TypeScript 4.0の作業はすでに進行中で、2020年8月に予定されている。TypeScript4.0のリリース目標には、awaited
型、ラベル付きタプル要素、前方宣言、その他多くが含まれる。
TypeScriptは、Apache 2ライセンスの下で利用可能なオープンソースソフトウェアである。貢献とフィードバックはTypeScript GitHubプロジェクトを通じて奨励されており、TypeScript貢献ガイドラインとマイクロソフトのオープンソース行動規範に従う必要がある。