File: unionTypesAssignability.errors.txt

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (157 lines) | stat: -rw-r--r-- 9,238 bytes parent folder | download | duplicates (3)
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
156
157
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(18,1): error TS2741: Property 'foo1' is missing in type 'E' but required in type 'D'.
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 TS2741: Property 'foo2' is missing in type 'D' but required in type 'E'.
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 TS2741: Property 'foo1' is missing in type 'C' but required in type 'D'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(32,1): error TS2741: Property 'foo2' is missing in type 'C' but required in type 'E'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(33,1): error TS2322: Type 'C' is not assignable to type 'D | 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'.
  'T' could be instantiated with an arbitrary type which could be unrelated to 'U'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(65,5): error TS2322: Type 'T' is not assignable to type 'U'.
  'U' could be instantiated with an arbitrary type which could be unrelated to 'T'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(70,5): error TS2322: Type 'T | U' is not assignable to type 'T'.
  'T' could be instantiated with an arbitrary type which could be unrelated to 'T | U'.
tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts(71,5): error TS2322: Type 'T | U' is not assignable to type 'U'.
  'U' could be instantiated with an arbitrary type which could be unrelated to 'T | 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 TS2741: Property 'foo1' is missing in type 'E' but required in type 'D'.
!!! related TS2728 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts:3:21: 'foo1' is declared here.
    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 TS2741: Property 'foo2' is missing in type 'D' but required in type 'E'.
!!! related TS2728 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts:4:21: 'foo2' is declared here.
    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 TS2741: Property 'foo1' is missing in type 'C' but required in type 'D'.
!!! related TS2728 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts:3:21: 'foo1' is declared here.
    e = c;
    ~
!!! error TS2741: Property 'foo2' is missing in type 'C' but required in type 'E'.
!!! related TS2728 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts:4:21: 'foo2' is declared here.
    unionDE = c; // error since C is not assinable to either D or E
    ~~~~~~~
!!! error TS2322: Type 'C' is not assignable to type 'D | 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'.
!!! error TS2322:   'T' could be instantiated with an arbitrary type which could be unrelated to 'U'.
!!! related TS2208 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts:63:17: This type parameter might need an `extends T` constraint.
        u = t; // error
        ~
!!! error TS2322: Type 'T' is not assignable to type 'U'.
!!! error TS2322:   'U' could be instantiated with an arbitrary type which could be unrelated to 'T'.
!!! related TS2208 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts:63:14: This type parameter might need an `extends U` constraint.
        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:   'T' could be instantiated with an arbitrary type which could be unrelated to 'T | U'.
!!! related TS2208 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts:63:17: This type parameter might need an `extends T` constraint.
        u = x; // error T not assignable to U
        ~
!!! error TS2322: Type 'T | U' is not assignable to type 'U'.
!!! error TS2322:   'U' could be instantiated with an arbitrary type which could be unrelated to 'T | U'.
!!! related TS2208 tests/cases/conformance/types/typeRelationships/assignmentCompatibility/unionTypesAssignability.ts:63:14: This type parameter might need an `extends U` constraint.
    }