Closed
Description
separated from #22432
TypeScript Version: 2.7.0-dev.20180307
Search Terms:
Code
type A<R> = [R] | [R, string];
declare function f<T>(f: A<T>): void;
f([undefined, ''] as [never, string]); // T: string
f([undefined, ''] as [void, string]); // T: string | void
Expected behavior:
f([undefined, ''] as [never, string]); // T: never
f([undefined, ''] as [void, string]); // T: void
Actual behavior:
f([undefined, ''] as [never, string]); // T: string
f([undefined, ''] as [void, string]); // T: string | void
Playground Link:
Related Issues: