Изменения в новых версиях / TypeScript 5.5

// *** before: ***
const key = "count" as const;
function read(obj: Record<stringstring | number>) {
    if (typeof obj[key] === "number") {
        // obj[key] снова string | number при следующем обращении
        return obj[key] + 1// <-Error: obj[key] может быть string
    }
    return 0;
}

// *** in version 5.5: ***
function readNarrowed(obj: Record<string, string | number>) {
    if (typeof obj[key] === "number") {
        return obj[key] + 1// OK: сужение сохранилось для того же
        //константного ключа
    }
    return 0;
}