1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(16,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new () => number'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(17,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new () => number'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(35,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'.
==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts (5 errors) ====
// call signatures in derived types must have the same or fewer optional parameters as the base type
interface Base {
a: new () => number;
a2: new (x?: number) => number;
a3: new (x: number) => number;
a4: new (x: number, y?: number) => number;
a5: new (x?: number, y?: number) => number;
a6: new (x: number, y: number) => number;
}
var b: Base;
var a: new () => number;
a = b.a; // ok
a = b.a2; // ok
a = b.a3; // error
~
!!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new () => number'.
a = b.a4; // error
~
!!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'.
a = b.a5; // ok
a = b.a6; // error
~
!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new () => number'.
var a2: new (x?: number) => number;
a2 = b.a; // ok
a2 = b.a2; // ok
a2 = b.a3; // ok
a2 = b.a4; // ok
a2 = b.a5; // ok
a2 = b.a6; // error
~~
!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'.
var a3: new (x: number) => number;
a3 = b.a; // ok
a3 = b.a2; // ok
a3 = b.a3; // ok
a3 = b.a4; // ok
a3 = b.a5; // ok
a3 = b.a6; // error
~~
!!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'.
var a4: new (x: number, y?: number) => number;
a4 = b.a; // ok
a4 = b.a2; // ok
a4 = b.a3; // ok
a4 = b.a4; // ok
a4 = b.a5; // ok
a4 = b.a6; // ok
var a5: new (x?: number, y?: number) => number;
a5 = b.a; // ok
a5 = b.a2; // ok
a5 = b.a3; // ok
a5 = b.a4; // ok
a5 = b.a5; // ok
a5 = b.a6; // ok
|