=== tests/cases/compiler/typeArgInferenceWithNull.ts === // All legal function fn4(n: T) { } >fn4 : (n: T) => void >T : T >n : T >T : T fn4(null); >fn4(null) : void >fn4 : (n: T) => void function fn5(n: T) { } >fn5 : (n: T) => void >T : T >x : string >n : T >T : T fn5({ x: null }); >fn5({ x: null }) : void >fn5 : (n: T) => void >{ x: null } : { x: null; } >x : null function fn6(n: T, fun: (x: T) => void, n2: T) { } >fn6 : (n: T, fun: (x: T) => void, n2: T) => void >T : T >x : string >n : T >T : T >fun : (x: T) => void >x : T >T : T >n2 : T >T : T fn6({ x: null }, y => { }, { x: "" }); // y has type { x: any }, but ideally would have type { x: string } >fn6({ x: null }, y => { }, { x: "" }) : void >fn6 : (n: T, fun: (x: T) => void, n2: T) => void >{ x: null } : { x: null; } >x : null >y => { } : (y: { x: string; }) => void >y : { x: string; } >{ x: "" } : { x: string; } >x : string