Когда 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
Детская площадка