Почему перегруженный оператор плюса не проверяет тип с моим типом объединения? - PullRequest
0 голосов
/ 05 мая 2020

Когда x / y имеют тип Foo<any>, выражение x + y проверяет тип. Однако в пределах append проверка типа не выполняется. Почему?

type Foo<A> = string | number;

function eq(x: Foo<number>): (y: Foo<number>) => boolean;
function eq(x: Foo<string>): (y: Foo<string>) => boolean {
    return y => {
        if (typeof x === "number")
            return x === y;

        else
            return x === y;
    }
}

const append = (x: Foo<any>) => (y: Foo<any>): Foo<any> => x + y;
//                                                         ^^^^^ type error

Детская площадка

...