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

// *** before: ***
function isString(x: unknown) {
    return typeof x === "string";
}
const arr: (string | number)[] = ["a"1"b"];
const strings = arr.filter(isString);
// strings: (string | number)[] - фильтр не сузил тип без явного "x is string"

// *** in version 5.5: ***
function isStringInferred(x: unknown) {
    return typeof x === "string"// предикат "x is string" выведен сам
}
const stringsNarrowed = arr.filter(isStringInferred);
// stringsNarrowed: string[]