Microsoftは、オープンソースのプログラミング言語の最新版「TypeScript 5.4」を公開した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2024年3月6日(米国時間、以下同)、オープンソースのプログラミング言語の最新版「TypeScript 5.4」を公開した。TypeScriptは、静的型付けができる言語で、JavaScriptのスーパーセットだ。ECMA規格に従った最新のJavaScriptの機能を、古いWebブラウザやランタイムが扱えるようにコンパイルすることもできる。
TypeScript 5.4では、最後の代入に続くクロージャによる型の絞り込みの保持、ユーティリティー型「NoInfer」の導入、「Object.groupBy」と「Map.groupBy」の宣言の追加など、さまざまな機能追加、改善が行われている。
TypeScript 5.4は、NuGetかnpmコマンドでインストールできる。
npm install -D typescript
TypeScriptは通常、実行される可能性のあるチェックに基づいて、変数の型を絞り込むことができる。だが、絞り込まれた型が関数クロージャ内で保持されるとは限らないという問題があった。
TypeScript 5.4では、ホイストされていない関数でパラメーターやlet変数が使われている場合、型チェッカーは最後の代入箇所を探し、見つかれば、TypeScriptが関数外から安全に型を絞り込めるようになった。
TypeScriptはジェネリック関数を呼び出すとき、渡されたものから型の引数を推測できる。だが、最適な型が何かは必ずしも明確ではない。
TypeScript 5.4では、ユーティリティー型「NoInfer」が導入された。NoInfer<...>で型を囲むことで、TypeScriptに対して「型推測の候補を見つけるために内部の型を掘り下げて照合しないように」というシグナルを送ることができる。
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型に対してチェックされるようになった。これにより、ランタイムがインポート属性をより正確に記述できるようになった。
引数が多すぎる関数に新しいパラメーターを追加するクイックフィックスが導入された。
これは、新しい引数を複数の既存の関数に通す場合に便利だ。
Node.jsのpackage.jsonは、「importss」というフィールドで「サブパスインポート」機能をサポートしている。これは、パッケージ内のパスを他のモジュールのパスに再マッピングする方法だ。TypeScriptの自動インポート機能はこれまで、インポート時にパスを考慮しなかったが、新たにサブパスインポートをサポートするようになった。
TypeScript 5.0では、以下のオプションと動作が非推奨となった。
これらを使い続けるには、TypeScript 5.0以降を使用する開発者は、ignoreDeprecationsという新しいオプションを「5.0」という値で指定する必要があった。TypScript 5.4は、これらが正常に機能し続ける最後のバージョンとなる。TypeScript 5.5(2024年6月にリリースされる見込み)では、これらはハードエラーとなり、これらを使用しているコードは移行する必要がある。
Copyright © ITmedia, Inc. All Rights Reserved.