tests/cases/compiler/callOverloads5.ts(1,10): error TS2300: Duplicate identifier 'Foo'. tests/cases/compiler/callOverloads5.ts(1,16): error TS2304: Cannot find name 'Foo'. tests/cases/compiler/callOverloads5.ts(2,10): error TS2300: Duplicate identifier 'Foo'. tests/cases/compiler/callOverloads5.ts(2,10): error TS2391: Function implementation is missing or not immediately following the declaration. tests/cases/compiler/callOverloads5.ts(2,24): error TS2304: Cannot find name 'Foo'. tests/cases/compiler/callOverloads5.ts(3,7): error TS2300: Duplicate identifier 'Foo'. tests/cases/compiler/callOverloads5.ts(13,10): error TS2350: Only a void function can be called with the 'new' keyword. ==== tests/cases/compiler/callOverloads5.ts (7 errors) ==== function Foo():Foo; // error ~~~ !!! error TS2300: Duplicate identifier 'Foo'. ~~~ !!! error TS2304: Cannot find name 'Foo'. function Foo(s:string):Foo; // error ~~~ !!! error TS2300: Duplicate identifier 'Foo'. ~~~ !!! error TS2391: Function implementation is missing or not immediately following the declaration. ~~~ !!! error TS2304: Cannot find name 'Foo'. class Foo { // error ~~~ !!! error TS2300: Duplicate identifier 'Foo'. bar1(s:string); bar1(n:number); bar1(a:any) { /*WScript.Echo(a);*/ } constructor(x: any) { // WScript.Echo("Constructor function has executed"); } } //class Foo(s: String); var f1 = new Foo("hey"); ~~~~~~~~~~~~~~ !!! error TS2350: Only a void function can be called with the 'new' keyword. f1.bar1("a"); Foo(); Foo("s");