=== tests/cases/compiler/inferentialTypingObjectLiteralMethod2.ts === interface Int { >Int : Int >T : T >U : U [s: string]: (x: T) => U; >s : string >x : T >T : T >U : U } declare function foo(x: T, y: Int, z: Int): T; >foo : (x: T, y: Int, z: Int) => T >T : T >U : U >x : T >T : T >y : Int >Int : Int >T : T >U : U >z : Int >Int : Int >U : U >T : T >T : T foo("", { method(p1) { return p1.length } }, { method(p2) { return undefined } }); >foo("", { method(p1) { return p1.length } }, { method(p2) { return undefined } }) : string >foo : (x: T, y: Int, z: Int) => T >"" : string >{ method(p1) { return p1.length } } : { [x: string]: (p1: string) => number; method(p1: string): number; } >method : (p1: string) => number >p1 : string >p1.length : number >p1 : string >length : number >{ method(p2) { return undefined } } : { [x: string]: (p2: number) => any; method(p2: number): any; } >method : (p2: number) => any >p2 : number >undefined : undefined