BREAKING CHANGE: lib.d.ts Updates

TL;DR

lib.d.tsに対するいくつかの破壊的変更が入った。

Stricter Spread Checks in JSX

JSXでスプレッド構文の対象がオブジェクトであることがチェックされるようになった。

function MyComponent(props: unknown) {
    
    // ❌ ERROR
    return <div {...props} />;
}

Stricter Checks with Template String Expressions

Symbolのテンプレート構文への展開が厳密にチェックされるようになった。

// ❌ ERROR
function fn<T extends symbol>(key: T): string {
    return `${key}`;
}

// ❌ ERROR
let str = `${Symbol()}`;

Stringでラップすることで回避できる。

function fn<T extends symbol>(key: T): string {
    return `${String(key)}`;
}

let str = `${String(Symbol())}`;

readFile Method is No Longer Optional on LanguageServiceHost

Reactのモジュール読み込みに起因した修正のようなのでスキップ。

readonly Tuples Have a readonly length Property

読み取り専用のタプルのlengthを変更できなくなった(バグ修正のよう)。

type Tuple = readonly [boolean, boolean];
declare const tuple: Tuple;

tuple.length = 1; // ❌ ERROR

Last updated