Microsoft、プログラミング言語「TypeScript 5.4」β版を公開:2024年2月下旬にリリース候補版、3月上旬に正式版を公開予定
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 5.4の主な新機能
最後の代入に続くクロージャによる型の絞り込みの保持
TypeScriptは通常、実行される可能性のあるチェックに基づいて、変数の型を絞り込むことができる。だが、絞り込まれた型が関数クロージャ内で保持されるとは限らないという問題があった。
TypeScript 5.4では、ホイストされていない関数でパラメーターやlet変数が使われている場合、型チェッカーは最後の代入箇所を探し、見つかれば、TypeScriptが関数外から安全に型を絞り込めるようになった。
ユーティリティー型「NoInfer」
TypeScriptはジェネリック関数を呼び出すとき、渡されたものから型の引数を推測できる。だが、最適な型が何かは必ずしも明確ではない。
TypeScript 5.4では、ユーティリティー型「NoInfer
「Object.groupBy」と「Map.groupBy」
JavaScriptの新しい静的メソッドである「Object.groupBy」と「Map.groupBy」の宣言が追加された。
Object.groupByはイテレート可能な要素と、各要素をどの「グループ」に入れるかを決定する関数を取る。この関数は、各グループの「キー」を作る必要があり、Object.groupByはそのキーを使って、各キーが元の要素を含む配列にマップされるオブジェクトを作る。
つまり、
上記のJavaScriptは基本的に、下記と同じだ。
Map.groupByはObject.groupByと似ているが、プレーンなオブジェクトの代わりにMapを生成する。
上記のmyObjは、以前と同様に下記のように作成することも可能だ。
Microsoftは「Mapの保証が必要な場合や、Mapを期待するAPIを扱っている場合、JavaScriptのプロパティ名として使えるキーだけでなく、任意のキーをグループ化に使う必要がある場合は、Map.groupByの方が望ましいかもしれない」と述べている。
--moduleResolution bundlerと--module preserveでのrequire()呼び出しのサポート
TypeScriptには、bundlerというmoduleResolutionオプションがあるが、オプションの制限の一つは、-module esnextと組み合わせなければならないため、import ... = require(...)という構文が使えないことだった。
TypeScript 5.4では、preserveという新しいオプションでmodule設定を行う際に、require()が使えるようになった。
インポート属性とアサーションのチェック
インポート属性とアサーションが、グローバルなImportAttributes型に対してチェックされるようになった。これにより、ランタイムがインポート属性をより正確に記述できるようになった。
TypeScript 5.0での非推奨事項は、コードの移行が必要に
TypeScript 5.0では、以下のオプションと動作が非推奨となった。
- target: ES3
- noImplicitUseStrict
- keyofStringsOnly
- suppressExcessPropertyErrors
- suppressImplicitAnyIndexErrors
- noStrictGenericChecks
- charset
- out
- プロジェクト参照でのprepend
- 暗黙的にOS固有のnewLine
これらを使い続けるには、TypeScript 5.0以降を使用する開発者は、ignoreDeprecationsという新しいオプションを「5.0」という値で指定する必要があった。
TypScript 5.4は、これらが正常に機能し続ける最後のバージョンとなる。TypeScript 5.5(2024年6月にリリースされる見込み)では、これらはハードエラーとなり、これらを使用しているコードは移行する必要がある。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Microsoft、プログラミング言語「TypeScript 5.3」を公開
Microsoftは、オープンソースのプログラミング言語の最新版「TypeScript 5.3」を公開した。 - Microsoft、「TypeScript 5.2」公開 「using宣言」のサポートや配列データに影響しないソート関数を追加
Microsoftはオープンソースのプログラミング言語の最新版「TypeScript 5.2」を公開した。 - 第1回 TypeScriptの概要
Visual Studio 2013 Update 2でのサポートも始まり、altJSの有力候補の1つとして、存在感を増しつつあるTypeScriptの入門連載がスタート! 今回はTypeScriptの概要を解説する。