File: intersectionAndUnionTypes.js

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (72 lines) | stat: -rw-r--r-- 884 bytes parent folder | download | duplicates (7)
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
71
72
//// [intersectionAndUnionTypes.ts]
interface A { a: string }
interface B { b: string }
interface C { c: string }
interface D { d: string }

var a: A;
var b: B;
var c: C;
var d: D;
var anb: A & B;
var aob: A | B;
var cnd: C & D;
var cod: C | D;
var x: A & B | C & D;
var y: (A | B) & (C | D);

a = anb;  // Ok
b = anb;  // Ok
anb = a;
anb = b;

x = anb;  // Ok
x = aob;
x = cnd;  // Ok
x = cod;
anb = x;
aob = x;
cnd = x;
cod = x;

y = anb;
y = aob;
y = cnd;
y = cod;
anb = y;
aob = y;  // Ok
cnd = y;
cod = y;  // Ok


//// [intersectionAndUnionTypes.js]
var a;
var b;
var c;
var d;
var anb;
var aob;
var cnd;
var cod;
var x;
var y;
a = anb; // Ok
b = anb; // Ok
anb = a;
anb = b;
x = anb; // Ok
x = aob;
x = cnd; // Ok
x = cod;
anb = x;
aob = x;
cnd = x;
cod = x;
y = anb;
y = aob;
y = cnd;
y = cod;
anb = y;
aob = y; // Ok
cnd = y;
cod = y; // Ok