// *** before: ***
const key = "count" as const;
function read(obj: Record<string, string | 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;
}