Microsoftは、オープンソースのプログラミング言語の最新版「TypeScript 5.4」のβ版を公開した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2024年1月29日(米国時間、以下同)、オープンソースのプログラミング言語の最新版「TypeScript 5.4」のβ版を公開した。TypeScriptは、静的型付けができる言語で、JavaScriptのスーパーセットだ。ECMA規格に従った最新のJavaScriptの機能を、古いWebブラウザやランタイムが扱えるようにコンパイルすることもできる。
Microsoftは、TypeScript 5.4のRelease Candidate(RC:リリース候補)の目標公開日を2月20日、正式版の目標公開日を3月5日としている。
TypeScript 5.4では、最後の代入に続くクロージャによる型の絞り込みの保持、ユーティリティー型「NoInfer」の導入、「Object.groupBy」と「Map.groupBy」の宣言の追加など、さまざまな機能追加、改善が行われている。
TypeScript 5.4 β版は、NuGetかnpmコマンドでインストールできる。
npm install -D typescript@beta
TypeScriptは通常、実行される可能性のあるチェックに基づいて、変数の型を絞り込むことができる。だが、絞り込まれた型が関数クロージャ内で保持されるとは限らないという問題があった。
TypeScript 5.4では、ホイストされていない関数でパラメーターやlet変数が使われている場合、型チェッカーは最後の代入箇所を探し、見つかれば、TypeScriptが関数外から安全に型を絞り込めるようになった。
TypeScriptはジェネリック関数を呼び出すとき、渡されたものから型の引数を推測できる。だが、最適な型が何かは必ずしも明確ではない。
TypeScript 5.4では、ユーティリティー型「NoInfer
JavaScriptの新しい静的メソッドである「Object.groupBy」と「Map.groupBy」の宣言が追加された。
Object.groupByはイテレート可能な要素と、各要素をどの「グループ」に入れるかを決定する関数を取る。この関数は、各グループの「キー」を作る必要があり、Object.groupByはそのキーを使って、各キーが元の要素を含む配列にマップされるオブジェクトを作る。
つまり、
上記のJavaScriptは基本的に、下記と同じだ。
Map.groupByはObject.groupByと似ているが、プレーンなオブジェクトの代わりにMapを生成する。
上記のmyObjは、以前と同様に下記のように作成することも可能だ。
Microsoftは「Mapの保証が必要な場合や、Mapを期待するAPIを扱っている場合、JavaScriptのプロパティ名として使えるキーだけでなく、任意のキーをグループ化に使う必要がある場合は、Map.groupByの方が望ましいかもしれない」と述べている。
TypeScriptには、bundlerというmoduleResolutionオプションがあるが、オプションの制限の一つは、-module esnextと組み合わせなければならないため、import ... = require(...)という構文が使えないことだった。
TypeScript 5.4では、preserveという新しいオプションでmodule設定を行う際に、require()が使えるようになった。
インポート属性とアサーションが、グローバルなImportAttributes型に対してチェックされるようになった。これにより、ランタイムがインポート属性をより正確に記述できるようになった。
TypeScript 5.0では、以下のオプションと動作が非推奨となった。
これらを使い続けるには、TypeScript 5.0以降を使用する開発者は、ignoreDeprecationsという新しいオプションを「5.0」という値で指定する必要があった。
TypScript 5.4は、これらが正常に機能し続ける最後のバージョンとなる。TypeScript 5.5(2024年6月にリリースされる見込み)では、これらはハードエラーとなり、これらを使用しているコードは移行する必要がある。
Copyright © ITmedia, Inc. All Rights Reserved.