TypeScript/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality2.errors.txt
2014-11-05 12:26:03 -08:00

137 lines
5.2 KiB
Plaintext

tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(74,5): error TS2322: Type 'D' is not assignable to type 'C'.
Property 'opt' is missing in type 'D'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(75,5): error TS2322: Type 'E' is not assignable to type 'C'.
Property 'opt' is missing in type 'E'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(76,5): error TS2322: Type 'F' is not assignable to type 'C'.
Property 'opt' is missing in type 'F'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(79,5): error TS2322: Type 'D' is not assignable to type '{ opt: Base; }'.
Property 'opt' is missing in type 'D'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(80,5): error TS2322: Type 'E' is not assignable to type '{ opt: Base; }'.
Property 'opt' is missing in type 'E'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(81,5): error TS2322: Type 'F' is not assignable to type '{ opt: Base; }'.
Property 'opt' is missing in type 'F'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(84,5): error TS2322: Type 'D' is not assignable to type '{ opt: Base; }'.
Property 'opt' is missing in type 'D'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(85,5): error TS2322: Type 'E' is not assignable to type '{ opt: Base; }'.
Property 'opt' is missing in type 'E'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts(86,5): error TS2322: Type 'F' is not assignable to type '{ opt: Base; }'.
Property 'opt' is missing in type 'F'.
==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithObjectMembersOptionality2.ts (9 errors) ====
// M is optional and S contains no property with the same name as M
// N is optional and T contains no property with the same name as N
class Base { foo: string; }
class Derived extends Base { bar: string; }
class Derived2 extends Derived { baz: string; }
module TargetHasOptional {
// targets
interface C {
opt?: Base
}
var c: C;
var a: { opt?: Base; }
var b: typeof a = { opt: new Base() }
// sources
interface D {
other: Base;
}
interface E {
other: Derived;
}
interface F {
other?: Derived;
}
var d: D;
var e: E;
var f: F;
// all ok
c = d;
c = e;
c = f;
c = a;
a = d;
a = e;
a = f;
a = c;
b = d;
b = e;
b = f;
b = a;
b = c;
}
module SourceHasOptional {
// targets
interface C {
opt: Base
}
var c: C;
var a: { opt: Base; }
var b = { opt: new Base() }
// sources
interface D {
other?: Base;
}
interface E {
other?: Derived;
}
interface F {
other: Derived;
}
var d: D;
var e: E;
var f: F;
c = d; // error
~
!!! error TS2322: Type 'D' is not assignable to type 'C'.
!!! error TS2322: Property 'opt' is missing in type 'D'.
c = e; // error
~
!!! error TS2322: Type 'E' is not assignable to type 'C'.
!!! error TS2322: Property 'opt' is missing in type 'E'.
c = f; // error
~
!!! error TS2322: Type 'F' is not assignable to type 'C'.
!!! error TS2322: Property 'opt' is missing in type 'F'.
c = a; // ok
a = d; // error
~
!!! error TS2322: Type 'D' is not assignable to type '{ opt: Base; }'.
!!! error TS2322: Property 'opt' is missing in type 'D'.
a = e; // error
~
!!! error TS2322: Type 'E' is not assignable to type '{ opt: Base; }'.
!!! error TS2322: Property 'opt' is missing in type 'E'.
a = f; // error
~
!!! error TS2322: Type 'F' is not assignable to type '{ opt: Base; }'.
!!! error TS2322: Property 'opt' is missing in type 'F'.
a = c; // ok
b = d; // error
~
!!! error TS2322: Type 'D' is not assignable to type '{ opt: Base; }'.
!!! error TS2322: Property 'opt' is missing in type 'D'.
b = e; // error
~
!!! error TS2322: Type 'E' is not assignable to type '{ opt: Base; }'.
!!! error TS2322: Property 'opt' is missing in type 'E'.
b = f; // error
~
!!! error TS2322: Type 'F' is not assignable to type '{ opt: Base; }'.
!!! error TS2322: Property 'opt' is missing in type 'F'.
b = a; // ok
b = c; // ok
}