File: recursiveConditionalTypes2.symbols

package info (click to toggle)
node-typescript 5.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 497,488 kB
  • sloc: javascript: 2,107,274; makefile: 6; sh: 1
file content (209 lines) | stat: -rw-r--r-- 9,741 bytes parent folder | download
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
//// [tests/cases/compiler/recursiveConditionalTypes2.ts] ////

=== recursiveConditionalTypes2.ts ===
// repro from https://github.com/microsoft/TypeScript/issues/43877

type UnionToIntersection<U> = (
>UnionToIntersection : Symbol(UnionToIntersection, Decl(recursiveConditionalTypes2.ts, 0, 0))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 2, 25))

  U extends any ? (k: U) => unknown : never
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 2, 25))
>k : Symbol(k, Decl(recursiveConditionalTypes2.ts, 3, 19))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 2, 25))

) extends (k: infer I) => unknown
>k : Symbol(k, Decl(recursiveConditionalTypes2.ts, 4, 11))
>I : Symbol(I, Decl(recursiveConditionalTypes2.ts, 4, 19))

  ? I
>I : Symbol(I, Decl(recursiveConditionalTypes2.ts, 4, 19))

  : never;

interface ClassSpec {
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))

  public?: object;
>public : Symbol(ClassSpec.public, Decl(recursiveConditionalTypes2.ts, 8, 21))

  private?: object;
>private : Symbol(ClassSpec.private, Decl(recursiveConditionalTypes2.ts, 9, 18))

  publicExtends?: Record<string, ClassSpec>;
>publicExtends : Symbol(ClassSpec.publicExtends, Decl(recursiveConditionalTypes2.ts, 10, 19))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))

  privateExtends?: Record<string, ClassSpec>;
>privateExtends : Symbol(ClassSpec.privateExtends, Decl(recursiveConditionalTypes2.ts, 11, 44))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))
}

type MaybeMergePrivateSuperSpec<T> = T extends Record<string, ClassSpec>
>MaybeMergePrivateSuperSpec : Symbol(MaybeMergePrivateSuperSpec, Decl(recursiveConditionalTypes2.ts, 13, 1))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 15, 32))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 15, 32))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))

  ? MergePrivateSuperSpec<T>
>MergePrivateSuperSpec : Symbol(MergePrivateSuperSpec, Decl(recursiveConditionalTypes2.ts, 26, 2))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 15, 32))

  : {};

type MaybeMergePrivateSpecs<T extends ClassSpec, U> = U extends ClassSpec
>MaybeMergePrivateSpecs : Symbol(MaybeMergePrivateSpecs, Decl(recursiveConditionalTypes2.ts, 17, 7))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 19, 28))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 19, 48))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 19, 48))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))

  ? MergePrivateSpecs<U, T>
>MergePrivateSpecs : Symbol(MergePrivateSpecs, Decl(recursiveConditionalTypes2.ts, 21, 6))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 19, 48))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 19, 28))

  : T;
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 19, 28))

type MergePrivateSpecs<T extends ClassSpec, U extends ClassSpec> = {
>MergePrivateSpecs : Symbol(MergePrivateSpecs, Decl(recursiveConditionalTypes2.ts, 21, 6))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 23, 23))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 23, 43))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))

  public: T["public"] & U["public"];
>public : Symbol(public, Decl(recursiveConditionalTypes2.ts, 23, 68))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 23, 23))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 23, 43))

  private: T["private"] & U["private"];
>private : Symbol(private, Decl(recursiveConditionalTypes2.ts, 24, 36))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 23, 23))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 23, 43))

};

type MergePrivateSuperSpec<T extends Record<string, ClassSpec>> =
>MergePrivateSuperSpec : Symbol(MergePrivateSuperSpec, Decl(recursiveConditionalTypes2.ts, 26, 2))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 28, 27))
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))

  UnionToIntersection<
>UnionToIntersection : Symbol(UnionToIntersection, Decl(recursiveConditionalTypes2.ts, 0, 0))
    {
      [P in keyof T]: SimplifyPrivateSpec<T[P]>;
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 31, 7))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 28, 27))
>SimplifyPrivateSpec : Symbol(SimplifyPrivateSpec, Decl(recursiveConditionalTypes2.ts, 33, 4))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 28, 27))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 31, 7))

    }[keyof T]
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 28, 27))

  >;

export type SimplifyPrivateSpec<T extends ClassSpec> = MaybeMergePrivateSpecs<
>SimplifyPrivateSpec : Symbol(SimplifyPrivateSpec, Decl(recursiveConditionalTypes2.ts, 33, 4))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 35, 32))
>ClassSpec : Symbol(ClassSpec, Decl(recursiveConditionalTypes2.ts, 6, 10))
>MaybeMergePrivateSpecs : Symbol(MaybeMergePrivateSpecs, Decl(recursiveConditionalTypes2.ts, 17, 7))

  MaybeMergePrivateSpecs<T, MaybeMergePrivateSuperSpec<T["publicExtends"]>>,
>MaybeMergePrivateSpecs : Symbol(MaybeMergePrivateSpecs, Decl(recursiveConditionalTypes2.ts, 17, 7))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 35, 32))
>MaybeMergePrivateSuperSpec : Symbol(MaybeMergePrivateSuperSpec, Decl(recursiveConditionalTypes2.ts, 13, 1))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 35, 32))

  MaybeMergePrivateSuperSpec<T["privateExtends"]>
>MaybeMergePrivateSuperSpec : Symbol(MaybeMergePrivateSuperSpec, Decl(recursiveConditionalTypes2.ts, 13, 1))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 35, 32))

>;

// repro from https://github.com/microsoft/TypeScript/issues/43877#issuecomment-866146516

type Converted<T> = {
>Converted : Symbol(Converted, Decl(recursiveConditionalTypes2.ts, 38, 2))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 42, 15))

  [P in keyof T]: null extends T[P] ? T[P] : T[P];
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 43, 3))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 42, 15))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 42, 15))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 43, 3))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 42, 15))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 43, 3))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 42, 15))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 43, 3))

};

type DefaultsDeep<T, U extends T> = {
>DefaultsDeep : Symbol(DefaultsDeep, Decl(recursiveConditionalTypes2.ts, 44, 2))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 46, 18))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 46, 20))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 46, 18))

  [P in keyof T]-?: U[P] extends T[P]
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 47, 3))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 46, 18))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 46, 20))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 47, 3))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 46, 18))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 47, 3))

    ? null extends U[P]
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 46, 20))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 47, 3))

      ? Converted<DefaultsDeep<T[P], NonNullable<U[P]>>>
>Converted : Symbol(Converted, Decl(recursiveConditionalTypes2.ts, 38, 2))
>DefaultsDeep : Symbol(DefaultsDeep, Decl(recursiveConditionalTypes2.ts, 44, 2))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 46, 18))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 47, 3))
>NonNullable : Symbol(NonNullable, Decl(lib.es5.d.ts, --, --))
>U : Symbol(U, Decl(recursiveConditionalTypes2.ts, 46, 20))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 47, 3))

      : T[P]
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 46, 18))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 47, 3))

    : T[P];
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 46, 18))
>P : Symbol(P, Decl(recursiveConditionalTypes2.ts, 47, 3))

};

interface _Array<T> {
>_Array : Symbol(_Array, Decl(recursiveConditionalTypes2.ts, 52, 2))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 54, 17))

  find<S extends T>(predicate: (value: T) => boolean): void;
>find : Symbol(_Array.find, Decl(recursiveConditionalTypes2.ts, 54, 21))
>S : Symbol(S, Decl(recursiveConditionalTypes2.ts, 55, 7))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 54, 17))
>predicate : Symbol(predicate, Decl(recursiveConditionalTypes2.ts, 55, 20))
>value : Symbol(value, Decl(recursiveConditionalTypes2.ts, 55, 32))
>T : Symbol(T, Decl(recursiveConditionalTypes2.ts, 54, 17))
}

const z: _Array<DefaultsDeep<{}, {}>> = [];
>z : Symbol(z, Decl(recursiveConditionalTypes2.ts, 58, 5))
>_Array : Symbol(_Array, Decl(recursiveConditionalTypes2.ts, 52, 2))
>DefaultsDeep : Symbol(DefaultsDeep, Decl(recursiveConditionalTypes2.ts, 44, 2))

z.find((_) => true);
>z.find : Symbol(_Array.find, Decl(recursiveConditionalTypes2.ts, 54, 21))
>z : Symbol(z, Decl(recursiveConditionalTypes2.ts, 58, 5))
>find : Symbol(_Array.find, Decl(recursiveConditionalTypes2.ts, 54, 21))
>_ : Symbol(_, Decl(recursiveConditionalTypes2.ts, 60, 8))