TypeScript/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types

565 lines
38 KiB
Text

=== 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<Base>, y: Array<Derived2>) => Array<Derived>;
>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<Base>, y: Array<Derived>) => Array<Derived>;
>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 <T extends Derived>(x: T): number[]; new <U extends Base>(x: U): number[]; }, Symbol(a16,Decl(assignmentCompatWithConstructSignatures3.ts,25,3))
new <T extends Derived>(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 <U extends Base>(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 <T>(x: T) => T[];
>b : new <T>(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 <T>(x: T) => T[]
>a : new (x: number) => number[], Symbol(a,Decl(assignmentCompatWithConstructSignatures3.ts,7,3))
>b : new <T>(x: T) => T[], Symbol(b,Decl(assignmentCompatWithConstructSignatures3.ts,44,3))
b = a; // ok
>b = a : new (x: number) => number[]
>b : new <T>(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 <T>(x: T) => string[];
>b2 : new <T>(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 <T>(x: T) => string[]
>a2 : new (x: number) => string[], Symbol(a2,Decl(assignmentCompatWithConstructSignatures3.ts,8,3))
>b2 : new <T>(x: T) => string[], Symbol(b2,Decl(assignmentCompatWithConstructSignatures3.ts,47,3))
b2 = a2; // ok
>b2 = a2 : new (x: number) => string[]
>b2 : new <T>(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 <T>(x: T) => T;
>b3 : new <T>(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 <T>(x: T) => T
>a3 : new (x: number) => void, Symbol(a3,Decl(assignmentCompatWithConstructSignatures3.ts,9,3))
>b3 : new <T>(x: T) => T, Symbol(b3,Decl(assignmentCompatWithConstructSignatures3.ts,50,3))
b3 = a3; // ok
>b3 = a3 : new (x: number) => void
>b3 : new <T>(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 <T, U>(x: T, y: U) => T;
>b4 : new <T, U>(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 <T, U>(x: T, y: U) => T
>a4 : new (x: string, y: number) => string, Symbol(a4,Decl(assignmentCompatWithConstructSignatures3.ts,10,3))
>b4 : new <T, U>(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 <T, U>(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 <T, U>(x: (arg: T) => U) => T;
>b5 : new <T, U>(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 <T, U>(x: (arg: T) => U) => T
>a5 : new (x: (arg: string) => number) => string, Symbol(a5,Decl(assignmentCompatWithConstructSignatures3.ts,11,3))
>b5 : new <T, U>(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 <T, U>(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 <T extends Base, U extends Derived>(x: (arg: T) => U) => T;
>b6 : new <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(x: (arg: T) => U) => T
>a6 : new (x: (arg: Base) => Derived) => Base, Symbol(a6,Decl(assignmentCompatWithConstructSignatures3.ts,12,3))
>b6 : new <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(x: (arg: T) => U) => (r: T) => U;
>b7 : new <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U;
>b8 : new <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U;
>b9 : new <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Base, U extends Derived>(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 <T extends Derived>(...x: T[]) => T;
>b10 : new <T extends Derived>(...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 <T extends Derived>(...x: T[]) => T
>a10 : new (...x: Derived[]) => Derived, Symbol(a10,Decl(assignmentCompatWithConstructSignatures3.ts,16,3))
>b10 : new <T extends Derived>(...x: T[]) => T, Symbol(b10,Decl(assignmentCompatWithConstructSignatures3.ts,71,3))
b10 = a10; // ok
>b10 = a10 : new (...x: Derived[]) => Derived
>b10 : new <T extends Derived>(...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 <T extends Base>(x: T, y: T) => T;
>b11 : new <T extends Base>(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 <T extends Base>(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 <T extends Base>(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 <T extends Base>(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 <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>;
>b12 : new <T extends Base[]>(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 <T extends Base[]>(x: Base[], y: T) => Derived[]
>a12 : new (x: Base[], y: Derived2[]) => Derived[], Symbol(a12,Decl(assignmentCompatWithConstructSignatures3.ts,18,3))
>b12 : new <T extends Base[]>(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 <T extends Base[]>(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 <T extends Array<Derived>>(x: Array<Base>, y: T) => T;
>b13 : new <T extends Derived[]>(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 <T extends Derived[]>(x: Base[], y: T) => T
>a13 : new (x: Base[], y: Derived[]) => Derived[], Symbol(a13,Decl(assignmentCompatWithConstructSignatures3.ts,19,3))
>b13 : new <T extends Derived[]>(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 <T extends Derived[]>(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 <T>(x: { a: T; b: T }) => T;
>b14 : new <T>(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 <T>(x: { a: T; b: T; }) => T
>a14 : new (x: { a: string; b: number; }) => Object, Symbol(a14,Decl(assignmentCompatWithConstructSignatures3.ts,20,3))
>b14 : new <T>(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 <T>(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 <T>(x: T) => T[];
>b15 : new <T>(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 <T>(x: T) => T[]
>a15 : { new (x: number): number[]; new (x: string): string[]; }, Symbol(a15,Decl(assignmentCompatWithConstructSignatures3.ts,21,3))
>b15 : new <T>(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 <T>(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 <T extends Base>(x: T) => number[];
>b16 : new <T extends Base>(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 <T extends Base>(x: T) => number[]
>a16 : { new <T extends Derived>(x: T): number[]; new <U extends Base>(x: U): number[]; }, Symbol(a16,Decl(assignmentCompatWithConstructSignatures3.ts,25,3))
>b16 : new <T extends Base>(x: T) => number[], Symbol(b16,Decl(assignmentCompatWithConstructSignatures3.ts,89,3))
b16 = a16; // ok
>b16 = a16 : { new <T extends Derived>(x: T): number[]; new <U extends Base>(x: U): number[]; }
>b16 : new <T extends Base>(x: T) => number[], Symbol(b16,Decl(assignmentCompatWithConstructSignatures3.ts,89,3))
>a16 : { new <T extends Derived>(x: T): number[]; new <U extends Base>(x: U): number[]; }, Symbol(a16,Decl(assignmentCompatWithConstructSignatures3.ts,25,3))
var b17: new <T>(x: new (a: T) => T) => T[]; // ok
>b17 : new <T>(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 <T>(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 <T>(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 <T>(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 <T>(x: new (a: T) => T) => T[];
>b18 : new <T>(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 <T>(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 <T>(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 <T>(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))