=== tests/cases/compiler/functionOverloads36.ts === function foo(bar:{a:number;}):number; >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } >bar : { a: number; } >a : number function foo(bar:{a:string;}):string; >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } >bar : { a: string; } >a : string function foo(bar:{a:any;}):any{ return bar } >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } >bar : { a: any; } >a : any >bar : { a: any; } var x = foo({a:'foo'}); >x : string >foo({a:'foo'}) : string >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } >{a:'foo'} : { a: string; } >a : string >'foo' : string