=== tests/cases/conformance/types/objectTypeLiteral/constructSignatures/constructSignaturesWithOverloads.ts === // No errors expected for basic overloads of construct signatures class C { >C : C constructor(x: number, y?: string); >x : number >y : string constructor(x: number, y: string); >x : number >y : string constructor(x: number) { } >x : number } var r1 = new C(1, ''); >r1 : C >new C(1, '') : C >C : typeof C >1 : number >'' : string class C2 { >C2 : C2 >T : T constructor(x: T, y?: string); >x : T >T : T >y : string constructor(x: T, y: string); >x : T >T : T >y : string constructor(x: T) { } >x : T >T : T } var r2 = new C2(1, ''); >r2 : C2 >new C2(1, '') : C2 >C2 : typeof C2 >1 : number >'' : string interface I { >I : I new(x: number, y?: string): C; >x : number >y : string >C : C new(x: number, y: string): C; >x : number >y : string >C : C } var i: I; >i : I >I : I var r3 = new i(1, ''); >r3 : C >new i(1, '') : C >i : I >1 : number >'' : string interface I2 { >I2 : I2 >T : T new (x: T, y?: string): C2; >x : T >T : T >y : string >C2 : C2 >T : T new (x: T, y: string): C2; >x : T >T : T >y : string >C2 : C2 >T : T new (x: T, y?: string): C2; >T : T >x : T >T : T >y : string >C2 : C2 >T : T new (x: T, y: string): C2; >T : T >x : T >T : T >y : string >C2 : C2 >T : T } var i2: I2; >i2 : I2 >I2 : I2 var r4 = new i2(1, ''); >r4 : C2 >new i2(1, '') : C2 >i2 : I2 >1 : number >'' : string var a: { >a : { new (x: number, y?: string): C; new (x: number, y: string): C; } new(x: number, y?: string): C; >x : number >y : string >C : C new(x: number, y: string): C; >x : number >y : string >C : C } var r5 = new a(1, ''); >r5 : C >new a(1, '') : C >a : { new (x: number, y?: string): C; new (x: number, y: string): C; } >1 : number >'' : string var b: { >b : { new (x: T, y?: string): C2; new (x: T, y: string): C2; } new(x: T, y?: string): C2; >T : T >x : T >T : T >y : string >C2 : C2 >T : T new(x: T, y: string): C2; >T : T >x : T >T : T >y : string >C2 : C2 >T : T } var r6 = new b(1, ''); >r6 : C2 >new b(1, '') : C2 >b : { new (x: T, y?: string): C2; new (x: T, y: string): C2; } >1 : number >'' : string