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では、不適切な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」も、この新しい型を使用するように更新されている。
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」という新しいコンパイラオプションが追加された。このオプションを有効化すると、サイドエフェクトインポートの際に対応するソースファイルが見つからない場合、TypeScriptはエラーを出力するようになる。
全ての入力ファイルに対する型チェックをスキップできる「--noCheck」オプションが追加された。
反復的に開発を進める際には、「tsc --noCheck」を実行し、その後「tsc --noEmit」で徹底的な型チェックを実行するなど、JavaScriptファイルの生成と型チェックのフェーズを分離できるようになる。
TypeScript 5.6では、他にも以下のような機能の追加や最適化、改善が実施されている。
Copyright © ITmedia, Inc. All Rights Reserved.