Based on code from knockout on DT: ```ts interface Punch { <T>(value: T): T; <T = any>(value: null): T | null } function x(p: Punch) { var wat = p<number>(5 as any) var wit = p<number>('hi') var wot = p<number>(5) } ``` **Expected behavior:** `wat: number, wit: number, wot: number` **Actual behavior:** `wat: number | null, wit: number | null, wot: number`