Test nested object literal assignability to intersection type

This commit is contained in:
Nathan Shively-Sanders 2016-05-13 15:58:46 -07:00
parent 2658cf62eb
commit 45f70d5b1e
4 changed files with 96 additions and 0 deletions

View file

@ -26,6 +26,19 @@ type F2 = (x: number) => number;
var f: F1 & F2;
var s = f("hello");
var n = f(42);
interface D {
nested: {d: string;};
}
interface E {
nested: { e: string; };
}
const de: D & E = {
nested: {
d: 'yes',
e: 'no'
}
}
//// [intersectionTypeMembers.js]
@ -42,3 +55,9 @@ xyz.x.c = "hello";
var f;
var s = f("hello");
var n = f(42);
var de = {
nested: {
d: 'yes',
e: 'no'
}
};

View file

@ -98,3 +98,33 @@ var n = f(42);
>n : Symbol(n, Decl(intersectionTypeMembers.ts, 26, 3))
>f : Symbol(f, Decl(intersectionTypeMembers.ts, 24, 3))
interface D {
>D : Symbol(D, Decl(intersectionTypeMembers.ts, 26, 14))
nested: {d: string;};
>nested : Symbol(D.nested, Decl(intersectionTypeMembers.ts, 28, 13))
>d : Symbol(d, Decl(intersectionTypeMembers.ts, 29, 13))
}
interface E {
>E : Symbol(E, Decl(intersectionTypeMembers.ts, 30, 1))
nested: { e: string; };
>nested : Symbol(E.nested, Decl(intersectionTypeMembers.ts, 31, 13))
>e : Symbol(e, Decl(intersectionTypeMembers.ts, 32, 13))
}
const de: D & E = {
>de : Symbol(de, Decl(intersectionTypeMembers.ts, 34, 5))
>D : Symbol(D, Decl(intersectionTypeMembers.ts, 26, 14))
>E : Symbol(E, Decl(intersectionTypeMembers.ts, 30, 1))
nested: {
>nested : Symbol(nested, Decl(intersectionTypeMembers.ts, 34, 19))
d: 'yes',
>d : Symbol(d, Decl(intersectionTypeMembers.ts, 35, 13))
e: 'no'
>e : Symbol(e, Decl(intersectionTypeMembers.ts, 36, 17))
}
}

View file

@ -114,3 +114,37 @@ var n = f(42);
>f : ((x: string) => string) & ((x: number) => number)
>42 : number
interface D {
>D : D
nested: {d: string;};
>nested : { d: string; }
>d : string
}
interface E {
>E : E
nested: { e: string; };
>nested : { e: string; }
>e : string
}
const de: D & E = {
>de : D & E
>D : D
>E : E
>{ nested: { d: 'yes', e: 'no' }} : { nested: { d: string; e: string; }; }
nested: {
>nested : { d: string; e: string; }
>{ d: 'yes', e: 'no' } : { d: string; e: string; }
d: 'yes',
>d : string
>'yes' : string
e: 'no'
>e : string
>'no' : string
}
}

View file

@ -25,3 +25,16 @@ type F2 = (x: number) => number;
var f: F1 & F2;
var s = f("hello");
var n = f(42);
interface D {
nested: {d: string;};
}
interface E {
nested: { e: string; };
}
const de: D & E = {
nested: {
d: 'yes',
e: 'no'
}
}