Closed
Description
TypeScript Version: nightly (2.2.0)
Code
function id<T>(x: T): T {
return x;
}
function stringId(x: string): string {
return x;
}
function numberId(x: number): number {
return x;
}
// OK: ((x: string) => string) | ((x: number) => number)
const f = true ? numberId : stringId;
// Actual: <T>(x: T) => T
// Expected: (x: string) => string
const g = true ? id : stringId;
Expected behavior:
Union between a function and a generic function should yield the most specific type, not the most general one.