File: unionTypesAssignability.errors.txt

package info (click to toggle)
node-typescript 2.1.5-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 203,952 kB
  • ctags: 52,987
  • sloc: sh: 11; makefile: 5
file content (155 lines) | stat: -rw-r--r-- 7,662 bytes parent folder | download | duplicates (2)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(18,1): error TS2322: Type 'E' is not assignable to type 'D'.
  Property 'foo1' is missing in type 'E'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(19,1): error TS2322: Type 'D | E' is not assignable to type 'D'.
  Type 'E' is not assignable to type 'D'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(20,1): error TS2322: Type 'D' is not assignable to type 'E'.
  Property 'foo2' is missing in type 'D'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(22,1): error TS2322: Type 'D | E' is not assignable to type 'E'.
  Type 'D' is not assignable to type 'E'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(24,1): error TS2322: Type 'string' is not assignable to type 'number'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(25,1): error TS2322: Type 'string | number' is not assignable to type 'number'.
  Type 'string' is not assignable to type 'number'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(26,1): error TS2322: Type 'number' is not assignable to type 'string'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(28,1): error TS2322: Type 'string | number' is not assignable to type 'string'.
  Type 'number' is not assignable to type 'string'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(31,1): error TS2322: Type 'C' is not assignable to type 'D'.
  Property 'foo1' is missing in type 'C'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(32,1): error TS2322: Type 'C' is not assignable to type 'E'.
  Property 'foo2' is missing in type 'C'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(33,1): error TS2322: Type 'C' is not assignable to type 'D | E'.
  Type 'C' is not assignable to type 'E'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(35,1): error TS2322: Type 'D' is not assignable to type 'E'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(37,1): error TS2322: Type 'E' is not assignable to type 'D'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(41,1): error TS2322: Type 'number' is not assignable to type 'string'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(43,1): error TS2322: Type 'string' is not assignable to type 'number'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(64,5): error TS2322: Type 'U' is not assignable to type 'T'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(65,5): error TS2322: Type 'T' is not assignable to type 'U'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(70,5): error TS2322: Type 'T | U' is not assignable to type 'T'.
  Type 'U' is not assignable to type 'T'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(71,5): error TS2322: Type 'T | U' is not assignable to type 'U'.
  Type 'T' is not assignable to type 'U'.


==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts (19 errors) ====
    var unionNumberString: number | string;
    class C { }
    class D extends C { foo1() { } }
    class E extends C { foo2() { } }
    var unionDE: D | E;
    
    var num: number;
    var str: string;
    var c: C;
    var d: D;
    var e: E;
    
    // A union type U is assignable to a type T if each type in U is assignable to T
    c = d;
    c = e;
    c = unionDE; // ok
    d = d;
    d = e;
    ~
!!! error TS2322: Type 'E' is not assignable to type 'D'.
!!! error TS2322:   Property 'foo1' is missing in type 'E'.
    d = unionDE; // error e is not assignable to d
    ~
!!! error TS2322: Type 'D | E' is not assignable to type 'D'.
!!! error TS2322:   Type 'E' is not assignable to type 'D'.
    e = d;
    ~
!!! error TS2322: Type 'D' is not assignable to type 'E'.
!!! error TS2322:   Property 'foo2' is missing in type 'D'.
    e = e;
    e = unionDE; // error d is not assignable to e
    ~
!!! error TS2322: Type 'D | E' is not assignable to type 'E'.
!!! error TS2322:   Type 'D' is not assignable to type 'E'.
    num = num;
    num = str;
    ~~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.
    num = unionNumberString; // error string is not assignable to number
    ~~~
!!! error TS2322: Type 'string | number' is not assignable to type 'number'.
!!! error TS2322:   Type 'string' is not assignable to type 'number'.
    str = num;
    ~~~
!!! error TS2322: Type 'number' is not assignable to type 'string'.
    str = str;
    str = unionNumberString; // error since number is not assignable to string
    ~~~
!!! error TS2322: Type 'string | number' is not assignable to type 'string'.
!!! error TS2322:   Type 'number' is not assignable to type 'string'.
    
    // A type T is assignable to a union type U if T is assignable to any type in U
    d = c;
    ~
!!! error TS2322: Type 'C' is not assignable to type 'D'.
!!! error TS2322:   Property 'foo1' is missing in type 'C'.
    e = c;
    ~
!!! error TS2322: Type 'C' is not assignable to type 'E'.
!!! error TS2322:   Property 'foo2' is missing in type 'C'.
    unionDE = c; // error since C is not assinable to either D or E
    ~~~~~~~
!!! error TS2322: Type 'C' is not assignable to type 'D | E'.
!!! error TS2322:   Type 'C' is not assignable to type 'E'.
    d = d;
    e = d;
    ~
!!! error TS2322: Type 'D' is not assignable to type 'E'.
    unionDE = d; // ok
    d = e;
    ~
!!! error TS2322: Type 'E' is not assignable to type 'D'.
    e = e;
    unionDE = e; // ok
    num = num;
    str = num;
    ~~~
!!! error TS2322: Type 'number' is not assignable to type 'string'.
    unionNumberString = num; // ok 
    num = str;
    ~~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.
    str = str;
    unionNumberString = str; // ok
    
    // Any
    var anyVar: any;
    anyVar = unionDE;
    anyVar = unionNumberString;
    unionDE = anyVar;
    unionNumberString = anyVar;
    
    // null
    unionDE = null;
    unionNumberString = null;
    
    // undefined
    unionDE = undefined;
    unionNumberString = undefined;
    
    // type parameters
    function foo<T, U>(t: T, u: U) {
        t = u; // error
        ~
!!! error TS2322: Type 'U' is not assignable to type 'T'.
        u = t; // error
        ~
!!! error TS2322: Type 'T' is not assignable to type 'U'.
        var x : T | U;
        x = t; // ok
        x = u; // ok
        x = undefined;
        t = x; // error U not assignable to T
        ~
!!! error TS2322: Type 'T | U' is not assignable to type 'T'.
!!! error TS2322:   Type 'U' is not assignable to type 'T'.
        u = x; // error T not assignable to U
        ~
!!! error TS2322: Type 'T | U' is not assignable to type 'U'.
!!! error TS2322:   Type 'T' is not assignable to type 'U'.
    }