新版本的变更 / TypeScript 5.4

// *** before: ***
function getUrl(url: string | undefined) {
    if (url === undefined) {
        url = "https://example.com";
    }
    return () => {
        console.log(url.toUpperCase()); // <-Error: url снова string |
        //undefined внутри замыкания
    };
}

// *** in version 5.4: ***
function getUrlNarrowed(url: string | undefined) {
    if (url === undefined) {
        url = "https://example.com";
    }
    return () => {
        console.log(url.toUpperCase()); // OK: TS видит, что url больше не
        //переприсваивался
    };
}