=== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures3.ts === // checking assignment compatibility relations for function types. All of these are valid. class Base { foo: string; } >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >foo : string, Symbol(foo, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 12)) class Derived extends Base { bar: string; } >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >bar : string, Symbol(bar, Decl(assignmentCompatWithConstructSignatures3.ts, 3, 28)) class Derived2 extends Derived { baz: string; } >Derived2 : Derived2, Symbol(Derived2, Decl(assignmentCompatWithConstructSignatures3.ts, 3, 43)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >baz : string, Symbol(baz, Decl(assignmentCompatWithConstructSignatures3.ts, 4, 32)) class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived, Symbol(OtherDerived, Decl(assignmentCompatWithConstructSignatures3.ts, 4, 47)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >bing : string, Symbol(bing, Decl(assignmentCompatWithConstructSignatures3.ts, 5, 33)) var a: new (x: number) => number[]; >a : new (x: number) => number[], Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 7, 3)) >x : number, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 7, 12)) var a2: new (x: number) => string[]; >a2 : new (x: number) => string[], Symbol(a2, Decl(assignmentCompatWithConstructSignatures3.ts, 8, 3)) >x : number, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 8, 13)) var a3: new (x: number) => void; >a3 : new (x: number) => void, Symbol(a3, Decl(assignmentCompatWithConstructSignatures3.ts, 9, 3)) >x : number, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 9, 13)) var a4: new (x: string, y: number) => string; >a4 : new (x: string, y: number) => string, Symbol(a4, Decl(assignmentCompatWithConstructSignatures3.ts, 10, 3)) >x : string, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 10, 13)) >y : number, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 10, 23)) var a5: new (x: (arg: string) => number) => string; >a5 : new (x: (arg: string) => number) => string, Symbol(a5, Decl(assignmentCompatWithConstructSignatures3.ts, 11, 3)) >x : (arg: string) => number, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 11, 13)) >arg : string, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 11, 17)) var a6: new (x: (arg: Base) => Derived) => Base; >a6 : new (x: (arg: Base) => Derived) => Base, Symbol(a6, Decl(assignmentCompatWithConstructSignatures3.ts, 12, 3)) >x : (arg: Base) => Derived, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 12, 13)) >arg : Base, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 12, 17)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) var a7: new (x: (arg: Base) => Derived) => (r: Base) => Derived; >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived, Symbol(a7, Decl(assignmentCompatWithConstructSignatures3.ts, 13, 3)) >x : (arg: Base) => Derived, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 13, 13)) >arg : Base, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 13, 17)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >r : Base, Symbol(r, Decl(assignmentCompatWithConstructSignatures3.ts, 13, 44)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) var a8: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived, Symbol(a8, Decl(assignmentCompatWithConstructSignatures3.ts, 14, 3)) >x : (arg: Base) => Derived, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 14, 13)) >arg : Base, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 14, 17)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >y : (arg2: Base) => Derived, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 14, 39)) >arg2 : Base, Symbol(arg2, Decl(assignmentCompatWithConstructSignatures3.ts, 14, 44)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >r : Base, Symbol(r, Decl(assignmentCompatWithConstructSignatures3.ts, 14, 72)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) var a9: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a9 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived, Symbol(a9, Decl(assignmentCompatWithConstructSignatures3.ts, 15, 3)) >x : (arg: Base) => Derived, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 15, 13)) >arg : Base, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 15, 17)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >y : (arg2: Base) => Derived, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 15, 39)) >arg2 : Base, Symbol(arg2, Decl(assignmentCompatWithConstructSignatures3.ts, 15, 44)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >r : Base, Symbol(r, Decl(assignmentCompatWithConstructSignatures3.ts, 15, 72)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) var a10: new (...x: Derived[]) => Derived; >a10 : new (...x: Derived[]) => Derived, Symbol(a10, Decl(assignmentCompatWithConstructSignatures3.ts, 16, 3)) >x : Derived[], Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 16, 14)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) var a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base, Symbol(a11, Decl(assignmentCompatWithConstructSignatures3.ts, 17, 3)) >x : { foo: string; }, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 17, 14)) >foo : string, Symbol(foo, Decl(assignmentCompatWithConstructSignatures3.ts, 17, 18)) >y : { foo: string; bar: string; }, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 17, 33)) >foo : string, Symbol(foo, Decl(assignmentCompatWithConstructSignatures3.ts, 17, 38)) >bar : string, Symbol(bar, Decl(assignmentCompatWithConstructSignatures3.ts, 17, 51)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) var a12: new (x: Array, y: Array) => Array; >a12 : new (x: Base[], y: Derived2[]) => Derived[], Symbol(a12, Decl(assignmentCompatWithConstructSignatures3.ts, 18, 3)) >x : Base[], Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 18, 14)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >y : Derived2[], Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 18, 29)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived2 : Derived2, Symbol(Derived2, Decl(assignmentCompatWithConstructSignatures3.ts, 3, 43)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) var a13: new (x: Array, y: Array) => Array; >a13 : new (x: Base[], y: Derived[]) => Derived[], Symbol(a13, Decl(assignmentCompatWithConstructSignatures3.ts, 19, 3)) >x : Base[], Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 19, 14)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >y : Derived[], Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 19, 29)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) var a14: new (x: { a: string; b: number }) => Object; >a14 : new (x: { a: string; b: number; }) => Object, Symbol(a14, Decl(assignmentCompatWithConstructSignatures3.ts, 20, 3)) >x : { a: string; b: number; }, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 20, 14)) >a : string, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 20, 18)) >b : number, Symbol(b, Decl(assignmentCompatWithConstructSignatures3.ts, 20, 29)) >Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) var a15: { >a15 : { new (x: number): number[]; new (x: string): string[]; }, Symbol(a15, Decl(assignmentCompatWithConstructSignatures3.ts, 21, 3)) new (x: number): number[]; >x : number, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 22, 9)) new (x: string): string[]; >x : string, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 23, 9)) } var a16: { >a16 : { new (x: T): number[]; new (x: U): number[]; }, Symbol(a16, Decl(assignmentCompatWithConstructSignatures3.ts, 25, 3)) new (x: T): number[]; >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 26, 9)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >x : T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 26, 28)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 26, 9)) new (x: U): number[]; >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 27, 9)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >x : U, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 27, 25)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 27, 9)) } var a17: { >a17 : { new (x: new (a: number) => number): number[]; new (x: new (a: string) => string): string[]; }, Symbol(a17, Decl(assignmentCompatWithConstructSignatures3.ts, 29, 3)) new (x: new (a: number) => number): number[]; >x : new (a: number) => number, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 30, 9)) >a : number, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 30, 17)) new (x: new (a: string) => string): string[]; >x : new (a: string) => string, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 31, 9)) >a : string, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 31, 17)) }; var a18: { >a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }, Symbol(a18, Decl(assignmentCompatWithConstructSignatures3.ts, 33, 3)) new (x: { >x : { new (a: number): number; new (a: string): string; }, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 34, 9)) new (a: number): number; >a : number, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 35, 13)) new (a: string): string; >a : string, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 36, 13)) }): any[]; new (x: { >x : { new (a: boolean): boolean; new (a: Date): Date; }, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 38, 9)) new (a: boolean): boolean; >a : boolean, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 39, 13)) new (a: Date): Date; >a : Date, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 40, 13)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) }): any[]; } var b: new (x: T) => T[]; >b : new (x: T) => T[], Symbol(b, Decl(assignmentCompatWithConstructSignatures3.ts, 44, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 44, 12)) >x : T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 44, 15)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 44, 12)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 44, 12)) a = b; // ok >a = b : new (x: T) => T[] >a : new (x: number) => number[], Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 7, 3)) >b : new (x: T) => T[], Symbol(b, Decl(assignmentCompatWithConstructSignatures3.ts, 44, 3)) b = a; // ok >b = a : new (x: number) => number[] >b : new (x: T) => T[], Symbol(b, Decl(assignmentCompatWithConstructSignatures3.ts, 44, 3)) >a : new (x: number) => number[], Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 7, 3)) var b2: new (x: T) => string[]; >b2 : new (x: T) => string[], Symbol(b2, Decl(assignmentCompatWithConstructSignatures3.ts, 47, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 47, 13)) >x : T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 47, 16)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 47, 13)) a2 = b2; // ok >a2 = b2 : new (x: T) => string[] >a2 : new (x: number) => string[], Symbol(a2, Decl(assignmentCompatWithConstructSignatures3.ts, 8, 3)) >b2 : new (x: T) => string[], Symbol(b2, Decl(assignmentCompatWithConstructSignatures3.ts, 47, 3)) b2 = a2; // ok >b2 = a2 : new (x: number) => string[] >b2 : new (x: T) => string[], Symbol(b2, Decl(assignmentCompatWithConstructSignatures3.ts, 47, 3)) >a2 : new (x: number) => string[], Symbol(a2, Decl(assignmentCompatWithConstructSignatures3.ts, 8, 3)) var b3: new (x: T) => T; >b3 : new (x: T) => T, Symbol(b3, Decl(assignmentCompatWithConstructSignatures3.ts, 50, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 50, 13)) >x : T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 50, 16)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 50, 13)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 50, 13)) a3 = b3; // ok >a3 = b3 : new (x: T) => T >a3 : new (x: number) => void, Symbol(a3, Decl(assignmentCompatWithConstructSignatures3.ts, 9, 3)) >b3 : new (x: T) => T, Symbol(b3, Decl(assignmentCompatWithConstructSignatures3.ts, 50, 3)) b3 = a3; // ok >b3 = a3 : new (x: number) => void >b3 : new (x: T) => T, Symbol(b3, Decl(assignmentCompatWithConstructSignatures3.ts, 50, 3)) >a3 : new (x: number) => void, Symbol(a3, Decl(assignmentCompatWithConstructSignatures3.ts, 9, 3)) var b4: new (x: T, y: U) => T; >b4 : new (x: T, y: U) => T, Symbol(b4, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 15)) >x : T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 19)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 13)) >y : U, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 24)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 15)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 13)) a4 = b4; // ok >a4 = b4 : new (x: T, y: U) => T >a4 : new (x: string, y: number) => string, Symbol(a4, Decl(assignmentCompatWithConstructSignatures3.ts, 10, 3)) >b4 : new (x: T, y: U) => T, Symbol(b4, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 3)) b4 = a4; // ok >b4 = a4 : new (x: string, y: number) => string >b4 : new (x: T, y: U) => T, Symbol(b4, Decl(assignmentCompatWithConstructSignatures3.ts, 53, 3)) >a4 : new (x: string, y: number) => string, Symbol(a4, Decl(assignmentCompatWithConstructSignatures3.ts, 10, 3)) var b5: new (x: (arg: T) => U) => T; >b5 : new (x: (arg: T) => U) => T, Symbol(b5, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 15)) >x : (arg: T) => U, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 19)) >arg : T, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 23)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 15)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 13)) a5 = b5; // ok >a5 = b5 : new (x: (arg: T) => U) => T >a5 : new (x: (arg: string) => number) => string, Symbol(a5, Decl(assignmentCompatWithConstructSignatures3.ts, 11, 3)) >b5 : new (x: (arg: T) => U) => T, Symbol(b5, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 3)) b5 = a5; // ok >b5 = a5 : new (x: (arg: string) => number) => string >b5 : new (x: (arg: T) => U) => T, Symbol(b5, Decl(assignmentCompatWithConstructSignatures3.ts, 56, 3)) >a5 : new (x: (arg: string) => number) => string, Symbol(a5, Decl(assignmentCompatWithConstructSignatures3.ts, 11, 3)) var b6: new (x: (arg: T) => U) => T; >b6 : new (x: (arg: T) => U) => T, Symbol(b6, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 13)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 28)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >x : (arg: T) => U, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 48)) >arg : T, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 52)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 28)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 13)) a6 = b6; // ok >a6 = b6 : new (x: (arg: T) => U) => T >a6 : new (x: (arg: Base) => Derived) => Base, Symbol(a6, Decl(assignmentCompatWithConstructSignatures3.ts, 12, 3)) >b6 : new (x: (arg: T) => U) => T, Symbol(b6, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 3)) b6 = a6; // ok >b6 = a6 : new (x: (arg: Base) => Derived) => Base >b6 : new (x: (arg: T) => U) => T, Symbol(b6, Decl(assignmentCompatWithConstructSignatures3.ts, 59, 3)) >a6 : new (x: (arg: Base) => Derived) => Base, Symbol(a6, Decl(assignmentCompatWithConstructSignatures3.ts, 12, 3)) var b7: new (x: (arg: T) => U) => (r: T) => U; >b7 : new (x: (arg: T) => U) => (r: T) => U, Symbol(b7, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 13)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 28)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >x : (arg: T) => U, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 48)) >arg : T, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 52)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 28)) >r : T, Symbol(r, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 70)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 28)) a7 = b7; // ok >a7 = b7 : new (x: (arg: T) => U) => (r: T) => U >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived, Symbol(a7, Decl(assignmentCompatWithConstructSignatures3.ts, 13, 3)) >b7 : new (x: (arg: T) => U) => (r: T) => U, Symbol(b7, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 3)) b7 = a7; // ok >b7 = a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived >b7 : new (x: (arg: T) => U) => (r: T) => U, Symbol(b7, Decl(assignmentCompatWithConstructSignatures3.ts, 62, 3)) >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived, Symbol(a7, Decl(assignmentCompatWithConstructSignatures3.ts, 13, 3)) var b8: new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; >b8 : new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U, Symbol(b8, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 13)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 28)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >x : (arg: T) => U, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 48)) >arg : T, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 52)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 28)) >y : (arg2: T) => U, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 65)) >arg2 : T, Symbol(arg2, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 70)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 28)) >r : T, Symbol(r, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 89)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 28)) a8 = b8; // ok >a8 = b8 : new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived, Symbol(a8, Decl(assignmentCompatWithConstructSignatures3.ts, 14, 3)) >b8 : new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U, Symbol(b8, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 3)) b8 = a8; // ok >b8 = a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived >b8 : new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U, Symbol(b8, Decl(assignmentCompatWithConstructSignatures3.ts, 65, 3)) >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived, Symbol(a8, Decl(assignmentCompatWithConstructSignatures3.ts, 14, 3)) var b9: new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; >b9 : new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U, Symbol(b9, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 13)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 28)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >x : (arg: T) => U, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 48)) >arg : T, Symbol(arg, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 52)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 28)) >y : (arg2: { foo: string; bing: number; }) => U, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 65)) >arg2 : { foo: string; bing: number; }, Symbol(arg2, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 70)) >foo : string, Symbol(foo, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 77)) >bing : number, Symbol(bing, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 90)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 28)) >r : T, Symbol(r, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 117)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 13)) >U : U, Symbol(U, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 28)) a9 = b9; // ok >a9 = b9 : new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U >a9 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived, Symbol(a9, Decl(assignmentCompatWithConstructSignatures3.ts, 15, 3)) >b9 : new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U, Symbol(b9, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 3)) b9 = a9; // ok >b9 = a9 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived >b9 : new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U, Symbol(b9, Decl(assignmentCompatWithConstructSignatures3.ts, 68, 3)) >a9 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived, Symbol(a9, Decl(assignmentCompatWithConstructSignatures3.ts, 15, 3)) var b10: new (...x: T[]) => T; >b10 : new (...x: T[]) => T, Symbol(b10, Decl(assignmentCompatWithConstructSignatures3.ts, 71, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 71, 14)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >x : T[], Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 71, 33)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 71, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 71, 14)) a10 = b10; // ok >a10 = b10 : new (...x: T[]) => T >a10 : new (...x: Derived[]) => Derived, Symbol(a10, Decl(assignmentCompatWithConstructSignatures3.ts, 16, 3)) >b10 : new (...x: T[]) => T, Symbol(b10, Decl(assignmentCompatWithConstructSignatures3.ts, 71, 3)) b10 = a10; // ok >b10 = a10 : new (...x: Derived[]) => Derived >b10 : new (...x: T[]) => T, Symbol(b10, Decl(assignmentCompatWithConstructSignatures3.ts, 71, 3)) >a10 : new (...x: Derived[]) => Derived, Symbol(a10, Decl(assignmentCompatWithConstructSignatures3.ts, 16, 3)) var b11: new (x: T, y: T) => T; >b11 : new (x: T, y: T) => T, Symbol(b11, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 14)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >x : T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 30)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 14)) >y : T, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 35)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 14)) a11 = b11; // ok >a11 = b11 : new (x: T, y: T) => T >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base, Symbol(a11, Decl(assignmentCompatWithConstructSignatures3.ts, 17, 3)) >b11 : new (x: T, y: T) => T, Symbol(b11, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 3)) b11 = a11; // ok >b11 = a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base >b11 : new (x: T, y: T) => T, Symbol(b11, Decl(assignmentCompatWithConstructSignatures3.ts, 74, 3)) >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base, Symbol(a11, Decl(assignmentCompatWithConstructSignatures3.ts, 17, 3)) var b12: new >(x: Array, y: T) => Array; >b12 : new (x: Base[], y: T) => Derived[], Symbol(b12, Decl(assignmentCompatWithConstructSignatures3.ts, 77, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 77, 14)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >x : Base[], Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 77, 37)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >y : T, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 77, 52)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 77, 14)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) a12 = b12; // ok >a12 = b12 : new (x: Base[], y: T) => Derived[] >a12 : new (x: Base[], y: Derived2[]) => Derived[], Symbol(a12, Decl(assignmentCompatWithConstructSignatures3.ts, 18, 3)) >b12 : new (x: Base[], y: T) => Derived[], Symbol(b12, Decl(assignmentCompatWithConstructSignatures3.ts, 77, 3)) b12 = a12; // ok >b12 = a12 : new (x: Base[], y: Derived2[]) => Derived[] >b12 : new (x: Base[], y: T) => Derived[], Symbol(b12, Decl(assignmentCompatWithConstructSignatures3.ts, 77, 3)) >a12 : new (x: Base[], y: Derived2[]) => Derived[], Symbol(a12, Decl(assignmentCompatWithConstructSignatures3.ts, 18, 3)) var b13: new >(x: Array, y: T) => T; >b13 : new (x: Base[], y: T) => T, Symbol(b13, Decl(assignmentCompatWithConstructSignatures3.ts, 80, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 80, 14)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Derived : Derived, Symbol(Derived, Decl(assignmentCompatWithConstructSignatures3.ts, 2, 27)) >x : Base[], Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 80, 40)) >Array : T[], Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >y : T, Symbol(y, Decl(assignmentCompatWithConstructSignatures3.ts, 80, 55)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 80, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 80, 14)) a13 = b13; // ok >a13 = b13 : new (x: Base[], y: T) => T >a13 : new (x: Base[], y: Derived[]) => Derived[], Symbol(a13, Decl(assignmentCompatWithConstructSignatures3.ts, 19, 3)) >b13 : new (x: Base[], y: T) => T, Symbol(b13, Decl(assignmentCompatWithConstructSignatures3.ts, 80, 3)) b13 = a13; // ok >b13 = a13 : new (x: Base[], y: Derived[]) => Derived[] >b13 : new (x: Base[], y: T) => T, Symbol(b13, Decl(assignmentCompatWithConstructSignatures3.ts, 80, 3)) >a13 : new (x: Base[], y: Derived[]) => Derived[], Symbol(a13, Decl(assignmentCompatWithConstructSignatures3.ts, 19, 3)) var b14: new (x: { a: T; b: T }) => T; >b14 : new (x: { a: T; b: T; }) => T, Symbol(b14, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 14)) >x : { a: T; b: T; }, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 17)) >a : T, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 21)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 14)) >b : T, Symbol(b, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 27)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 14)) a14 = b14; // ok >a14 = b14 : new (x: { a: T; b: T; }) => T >a14 : new (x: { a: string; b: number; }) => Object, Symbol(a14, Decl(assignmentCompatWithConstructSignatures3.ts, 20, 3)) >b14 : new (x: { a: T; b: T; }) => T, Symbol(b14, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 3)) b14 = a14; // ok >b14 = a14 : new (x: { a: string; b: number; }) => Object >b14 : new (x: { a: T; b: T; }) => T, Symbol(b14, Decl(assignmentCompatWithConstructSignatures3.ts, 83, 3)) >a14 : new (x: { a: string; b: number; }) => Object, Symbol(a14, Decl(assignmentCompatWithConstructSignatures3.ts, 20, 3)) var b15: new (x: T) => T[]; >b15 : new (x: T) => T[], Symbol(b15, Decl(assignmentCompatWithConstructSignatures3.ts, 86, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 86, 14)) >x : T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 86, 17)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 86, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 86, 14)) a15 = b15; // ok >a15 = b15 : new (x: T) => T[] >a15 : { new (x: number): number[]; new (x: string): string[]; }, Symbol(a15, Decl(assignmentCompatWithConstructSignatures3.ts, 21, 3)) >b15 : new (x: T) => T[], Symbol(b15, Decl(assignmentCompatWithConstructSignatures3.ts, 86, 3)) b15 = a15; // ok >b15 = a15 : { new (x: number): number[]; new (x: string): string[]; } >b15 : new (x: T) => T[], Symbol(b15, Decl(assignmentCompatWithConstructSignatures3.ts, 86, 3)) >a15 : { new (x: number): number[]; new (x: string): string[]; }, Symbol(a15, Decl(assignmentCompatWithConstructSignatures3.ts, 21, 3)) var b16: new (x: T) => number[]; >b16 : new (x: T) => number[], Symbol(b16, Decl(assignmentCompatWithConstructSignatures3.ts, 89, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 89, 14)) >Base : Base, Symbol(Base, Decl(assignmentCompatWithConstructSignatures3.ts, 0, 0)) >x : T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 89, 30)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 89, 14)) a16 = b16; // ok >a16 = b16 : new (x: T) => number[] >a16 : { new (x: T): number[]; new (x: U): number[]; }, Symbol(a16, Decl(assignmentCompatWithConstructSignatures3.ts, 25, 3)) >b16 : new (x: T) => number[], Symbol(b16, Decl(assignmentCompatWithConstructSignatures3.ts, 89, 3)) b16 = a16; // ok >b16 = a16 : { new (x: T): number[]; new (x: U): number[]; } >b16 : new (x: T) => number[], Symbol(b16, Decl(assignmentCompatWithConstructSignatures3.ts, 89, 3)) >a16 : { new (x: T): number[]; new (x: U): number[]; }, Symbol(a16, Decl(assignmentCompatWithConstructSignatures3.ts, 25, 3)) var b17: new (x: new (a: T) => T) => T[]; // ok >b17 : new (x: new (a: T) => T) => T[], Symbol(b17, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 14)) >x : new (a: T) => T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 17)) >a : T, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 25)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 14)) a17 = b17; // ok >a17 = b17 : new (x: new (a: T) => T) => T[] >a17 : { new (x: new (a: number) => number): number[]; new (x: new (a: string) => string): string[]; }, Symbol(a17, Decl(assignmentCompatWithConstructSignatures3.ts, 29, 3)) >b17 : new (x: new (a: T) => T) => T[], Symbol(b17, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 3)) b17 = a17; // ok >b17 = a17 : { new (x: new (a: number) => number): number[]; new (x: new (a: string) => string): string[]; } >b17 : new (x: new (a: T) => T) => T[], Symbol(b17, Decl(assignmentCompatWithConstructSignatures3.ts, 92, 3)) >a17 : { new (x: new (a: number) => number): number[]; new (x: new (a: string) => string): string[]; }, Symbol(a17, Decl(assignmentCompatWithConstructSignatures3.ts, 29, 3)) var b18: new (x: new (a: T) => T) => T[]; >b18 : new (x: new (a: T) => T) => T[], Symbol(b18, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 3)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 14)) >x : new (a: T) => T, Symbol(x, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 17)) >a : T, Symbol(a, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 25)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 14)) >T : T, Symbol(T, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 14)) a18 = b18; // ok >a18 = b18 : new (x: new (a: T) => T) => T[] >a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }, Symbol(a18, Decl(assignmentCompatWithConstructSignatures3.ts, 33, 3)) >b18 : new (x: new (a: T) => T) => T[], Symbol(b18, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 3)) b18 = a18; // ok >b18 = a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } >b18 : new (x: new (a: T) => T) => T[], Symbol(b18, Decl(assignmentCompatWithConstructSignatures3.ts, 95, 3)) >a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }, Symbol(a18, Decl(assignmentCompatWithConstructSignatures3.ts, 33, 3))