BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Performance, Promise, Errorが改善されたTypeScript 3.9

Performance, Promise, Errorが改善されたTypeScript 3.9

ブックマーク

原文(投稿日:2020/05/31)へのリンク

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-uistyled-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貢献ガイドラインマイクロソフトのオープンソース行動規範に従う必要がある。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT