Microsoft、プログラミング言語「TypeScript 5.6」正式版公開 真偽値チェックのバグ提示など新機能を追加:イテレータヘルパーメソッドの追加など使い勝手を向上
Microsoftは、オープンソースのプログラミング言語の最新版「TypeScript 5.6」を公開した。
Microsoftは2024年9月9日(米国時間)、オープンソースのプログラミング言語の最新版「TypeScript 5.6」を公開した。
TypeScriptは、静的型付けができる言語で、JavaScriptのスーパーセットだ。ECMA規格に従った最新のJavaScriptの機能を、古いWebブラウザやランタイムが扱えるようにコンパイルすることもできる。
TypeScript 5.6は、NuGetかnpmコマンドでインストールできる。
npm install -D typescript
TypeScript 5.6の主な新機能
常に「真」または「Null」となるチェックをコンパイルエラーにする
TypeScript 5.6では、不適切なNullishチェックや真値(truthy)チェックにエラーを出力するようになった。常に真値またはNullとなる構文がある場合、コンパイルエラーを出力する。これにより、コード内の誤りを早く発見できる。
「true」「false」「0」「1」が使われている式の場合、このエラーは出力されないという。
if (/0x[0-9a-f]/) { // ~~~~~~~~~~~~ // error: This kind of expression is always truthy. } if (x => 0) { // ~~~~~~ // error: This kind of expression is always truthy. } function isValid(value: string | number, options: any, strictness: "strict" | "loose") { if (strictness === "loose") { value = +value } return value < options.max ?? 100; // ~~~~~~~~~~~~~~~~~~~ // error: Right operand of ?? is unreachable because the left operand is never nullish. } if ( isValid(primaryValue, "strict") || isValid(secondaryValue, "strict") || isValid(primaryValue, "loose" || isValid(secondaryValue, "loose")) ) { // ~~~~~~~ // error: This kind of expression is always truthy. }
イテレータヘルパーメソッドの追加
TypeScript 5.6では、配列(Array)にのみ存在していたメソッド(map、filter、take)などがイテラブルイテレータ(IterableIterator)にも追加され、より柔軟な操作が可能になった。
function* positiveIntegers() { let i = 1; while (true) { yield i; i++; } } const evenNumbers = positiveIntegers().map(x => x * 2); // Output: // 2 // 4 // 6 // 8 // 10 for (const value of evenNumbers.take(5)) { console.log(value); }
またイテレータを拡張する新しい型として「IteratorObject」が導入された。これは以下のように定義されている。
interface IteratorObject<T, TReturn = unknown, TNext = unknown> extends Iterator<T, TReturn, TNext> { [Symbol.iterator](): IteratorObject<T, TReturn, TNext>; }
多くの組み込みコレクションやメソッドは「IteratorObject」のサブタイプ(「ArrayIterator」「SetIterator」「MapIterator」など)を生成する。「lib.d.ts」内のコアJavaScriptおよびDOMの型、そして「@types/node」も、この新しい型を使用するように更新されている。
厳密な組み込みイテレータチェックとstrictBuiltinIteratorReturnフラグの導入
TypeScript 5.6では、「BuiltinIteratorReturn」と呼ばれる新しい組み込み型と、「--strictBuiltinIteratorReturn」という新しい「--strict-mode」フラグが導入された。「lib.d.ts」のような場所で、IteratorObjectが使用される場合、TReturnには常にBuiltinIteratorReturn型が使用されるようになる。
任意のモジュール識別子のサポート
TypeScript 5.6では、通常は変数名として使えない絵文字や特殊な文字列を、有効な変数名に変換することで扱うことができるようになった。
const banana = "🍌"; export { banana as "🍌" };
import { "🍌" as banana } from "./foo" /** * om nom nom */ function eat(food: string) { console.log("Eating", food); }; eat(banana);
--noUncheckedSideEffectImportsオプションを追加
「--noUncheckedSideEffectImports」という新しいコンパイラオプションが追加された。このオプションを有効化すると、サイドエフェクトインポートの際に対応するソースファイルが見つからない場合、TypeScriptはエラーを出力するようになる。
--noCheckオプションを追加
全ての入力ファイルに対する型チェックをスキップできる「--noCheck」オプションが追加された。
反復的に開発を進める際には、「tsc --noCheck」を実行し、その後「tsc --noEmit」で徹底的な型チェックを実行するなど、JavaScriptファイルの生成と型チェックのフェーズを分離できるようになる。
TypeScript 5.6では、他にも以下のような機能の追加や最適化、改善が実施されている。
- 依存関係におけるエラーが発生してもビルドを継続するプロセス改善
- 表示領域に対する優先的なファイル診断で編集のレスポンスを向上
- 特定の文字で補完を自動確定させる精度の改善
- 正規表現で自動インポートの候補を除外できる設定を追加
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- TypeScript 5.5正式版公開 正規表現の構文チェックなど新機能追加
Microsoftは「TypeScript 5.5」の正式版を公開した。本記事では、「新しいECMAScript Setメソッドのサポート」「正規表現の構文チェック」などのβ版以降に追加された新機能について取り上げる。 - TypeScript 5.5 β版公開、「型述語の推論」や「JSDoc内の型インポート」とは
Microsoftは「TypeScript 5.5」のβ版を公開した。本記事では、追加された「型述語の推論」と「JSDoc内の型インポート」について取り上げる。 - プログラミング言語の人気ランキング、TypeScriptが上昇、C++は下落 RedMonk調べ
RedMonkは2024年第1四半期のプログラミング言語の人気ランキングを発表した。JavaScript、Python、Javaがトップ3を占めた。TypeScriptが順位を1つ上げた一方、C++が順位を1つ下げた。