@@ -17,18 +17,22 @@ function f1() {
17
17
18
18
let f0 = fx<>; // Error
19
19
>f0 : { <T>(x: T): T; <T>(x: T, n: number): T; <T, U>(t: [T, U]): [T, U]; }
20
+ >fx<> : { <T>(x: T): T; <T>(x: T, n: number): T; <T, U>(t: [T, U]): [T, U]; }
20
21
>fx : { <T>(x: T): T; <T>(x: T, n: number): T; <T, U>(t: [T, U]): [T, U]; }
21
22
22
23
let f1 = fx<string>; // { (x: string): string; (x: string, n: number): string; }
23
24
>f1 : { (x: string): string; (x: string, n: number): string; }
25
+ >fx<string> : { (x: string): string; (x: string, n: number): string; }
24
26
>fx : { <T>(x: T): T; <T>(x: T, n: number): T; <T, U>(t: [T, U]): [T, U]; }
25
27
26
28
let f2 = fx<string, number>; // (t: [string, number]) => [string, number]
27
29
>f2 : (t: [string, number]) => [string, number]
30
+ >fx<string, number> : (t: [string, number]) => [string, number]
28
31
>fx : { <T>(x: T): T; <T>(x: T, n: number): T; <T, U>(t: [T, U]): [T, U]; }
29
32
30
33
let f3 = fx<string, number, boolean>; // Error
31
34
>f3 : {}
35
+ >fx<string, number, boolean> : {}
32
36
>fx : { <T>(x: T): T; <T>(x: T, n: number): T; <T, U>(t: [T, U]): [T, U]; }
33
37
}
34
38
@@ -53,14 +57,17 @@ function f2() {
53
57
54
58
const A0 = Array<>; // Error
55
59
>A0 : ArrayConstructor
60
+ >Array<> : ArrayConstructor
56
61
>Array : ArrayConstructor
57
62
58
63
const A1 = Array<string>; // new (...) => string[]
59
64
>A1 : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; }
65
+ >Array<string> : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; }
60
66
>Array : ArrayConstructor
61
67
62
68
const A2 = Array<string, number>; // Error
63
69
>A2 : { isArray(arg: any): arg is any[]; readonly prototype: any[]; }
70
+ >Array<string, number> : { isArray(arg: any): arg is any[]; readonly prototype: any[]; }
64
71
>Array : ArrayConstructor
65
72
}
66
73
@@ -92,10 +99,12 @@ function f3() {
92
99
93
100
let c1 = C<string>; // { new (x: string): C<string>; f<U>(x: U): T[]; prototype: C<any>; }
94
101
>c1 : { new (x: string): C<string>; prototype: C<any>; f<U>(x: U): U[]; }
102
+ >C<string> : { new (x: string): C<string>; prototype: C<any>; f<U>(x: U): U[]; }
95
103
>C : typeof C
96
104
97
105
let f1 = C.f<string>; // (x: string) => string[]
98
106
>f1 : (x: string) => string[]
107
+ >C.f<string> : (x: string) => string[]
99
108
>C.f : <U>(x: U) => U[]
100
109
>C : typeof C
101
110
>f : <U>(x: U) => U[]
@@ -110,6 +119,7 @@ function f10(f: { <T>(a: T): T, <U>(a: U, b: number): U[] }) {
110
119
111
120
let fs = f<string>; // { (a: string): string; (a: string, b: number): string[]; }
112
121
>fs : { (a: string): string; (a: string, b: number): string[]; }
122
+ >f<string> : { (a: string): string; (a: string, b: number): string[]; }
113
123
>f : { <T>(a: T): T; <U>(a: U, b: number): U[]; }
114
124
}
115
125
@@ -122,6 +132,7 @@ function f11(f: { <T>(a: T): T, (a: string, b: number): string[] }) {
122
132
123
133
let fs = f<string>; // (a: string) => string
124
134
>fs : (a: string) => string
135
+ >f<string> : (a: string) => string
125
136
>f : { <T>(a: T): T; (a: string, b: number): string[]; }
126
137
}
127
138
@@ -133,6 +144,7 @@ function f12(f: { <T>(a: T): T, x: string }) {
133
144
134
145
let fs = f<string>; // { (a: string): string; x: string; }
135
146
>fs : { (a: string): string; x: string; }
147
+ >f<string> : { (a: string): string; x: string; }
136
148
>f : { <T>(a: T): T; x: string; }
137
149
}
138
150
@@ -144,6 +156,7 @@ function f13(f: { x: string, y: string }) {
144
156
145
157
let fs = f<string>; // Error, no applicable signatures
146
158
>fs : { x: string; y: string; }
159
+ >f<string> : { x: string; y: string; }
147
160
>f : { x: string; y: string; }
148
161
}
149
162
@@ -156,6 +169,7 @@ function f14(f: { new <T>(a: T): T, new <U>(a: U, b: number): U[] }) {
156
169
157
170
let fs = f<string>; // { new (a: string): string; new (a: string, b: number): string[]; }
158
171
>fs : { new (a: string): string; new (a: string, b: number): string[]; }
172
+ >f<string> : { new (a: string): string; new (a: string, b: number): string[]; }
159
173
>f : { new <T>(a: T): T; new <U>(a: U, b: number): U[]; }
160
174
}
161
175
@@ -168,6 +182,7 @@ function f15(f: { new <T>(a: T): T, <U>(a: U, b: number): U[] }) {
168
182
169
183
let fs = f<string>; // { new (a: string): string; (a: string, b: number): string[]; }
170
184
>fs : { (a: string, b: number): string[]; new (a: string): string; }
185
+ >f<string> : { (a: string, b: number): string[]; new (a: string): string; }
171
186
>f : { <U>(a: U, b: number): U[]; new <T>(a: T): T; }
172
187
}
173
188
@@ -180,6 +195,7 @@ function f16(f: { new <T>(a: T): T, (a: string, b: number): string[] }) {
180
195
181
196
let fs = f<string>; // new (a: string) => string
182
197
>fs : new (a: string) => string
198
+ >f<string> : new (a: string) => string
183
199
>f : { (a: string, b: number): string[]; new <T>(a: T): T; }
184
200
}
185
201
@@ -192,6 +208,7 @@ function f17(f: { <T>(a: T): T, new (a: string, b: number): string[] }) {
192
208
193
209
let fs = f<string>; // (a: string) => string
194
210
>fs : (a: string) => string
211
+ >f<string> : (a: string) => string
195
212
>f : { <T>(a: T): T; new (a: string, b: number): string[]; }
196
213
}
197
214
@@ -204,6 +221,7 @@ function f20(f: (<T>(a: T) => T) & (<U>(a: U, b: number) => U[])) {
204
221
205
222
let fs = f<string>; // ((a: string) => string) & ((a: string, b: number) => string[]])
206
223
>fs : ((a: string) => string) & ((a: string, b: number) => string[])
224
+ >f<string> : ((a: string) => string) & ((a: string, b: number) => string[])
207
225
>f : (<T>(a: T) => T) & (<U>(a: U, b: number) => U[])
208
226
}
209
227
@@ -216,6 +234,7 @@ function f21(f: (<T>(a: T) => T) & ((a: string, b: number) => string[])) {
216
234
217
235
let fs = f<string>; // (a: string) => string
218
236
>fs : (a: string) => string
237
+ >f<string> : (a: string) => string
219
238
>f : (<T>(a: T) => T) & ((a: string, b: number) => string[])
220
239
}
221
240
@@ -227,6 +246,7 @@ function f22(f: (<T>(a: T) => T) & { x: string }) {
227
246
228
247
let fs = f<string>; // ((a: string) => string) & { x: string }
229
248
>fs : ((a: string) => string) & { x: string; }
249
+ >f<string> : ((a: string) => string) & { x: string; }
230
250
>f : (<T>(a: T) => T) & { x: string; }
231
251
}
232
252
@@ -238,6 +258,7 @@ function f23(f: { x: string } & { y: string }) {
238
258
239
259
let fs = f<string>; // Error, no applicable signatures
240
260
>fs : { x: string; } & { y: string; }
261
+ >f<string> : { x: string; } & { y: string; }
241
262
>f : { x: string; } & { y: string; }
242
263
}
243
264
@@ -250,6 +271,7 @@ function f24(f: (new <T>(a: T) => T) & (new <U>(a: U, b: number) => U[])) {
250
271
251
272
let fs = f<string>; // (new (a: string) => string) & ((a: string, b: number) => string[]])
252
273
>fs : (new (a: string) => string) & (new (a: string, b: number) => string[])
274
+ >f<string> : (new (a: string) => string) & (new (a: string, b: number) => string[])
253
275
>f : (new <T>(a: T) => T) & (new <U>(a: U, b: number) => U[])
254
276
}
255
277
@@ -262,6 +284,7 @@ function f25(f: (new <T>(a: T) => T) & (<U>(a: U, b: number) => U[])) {
262
284
263
285
let fs = f<string>; // (new (a: string) => string) & ((a: string, b: number) => string[]])
264
286
>fs : (new (a: string) => string) & ((a: string, b: number) => string[])
287
+ >f<string> : (new (a: string) => string) & ((a: string, b: number) => string[])
265
288
>f : (new <T>(a: T) => T) & (<U>(a: U, b: number) => U[])
266
289
}
267
290
@@ -274,6 +297,7 @@ function f26(f: (new <T>(a: T) => T) & ((a: string, b: number) => string[])) {
274
297
275
298
let fs = f<string>; // new (a: string) => string
276
299
>fs : new (a: string) => string
300
+ >f<string> : new (a: string) => string
277
301
>f : (new <T>(a: T) => T) & ((a: string, b: number) => string[])
278
302
}
279
303
@@ -286,6 +310,7 @@ function f27(f: (<T>(a: T) => T) & (new (a: string, b: number) => string[])) {
286
310
287
311
let fs = f<string>; // (a: string) => string
288
312
>fs : (a: string) => string
313
+ >f<string> : (a: string) => string
289
314
>f : (<T>(a: T) => T) & (new (a: string, b: number) => string[])
290
315
}
291
316
@@ -298,6 +323,7 @@ function f30(f: (<T>(a: T) => T) | (<U>(a: U, b: number) => U[])) {
298
323
299
324
let fs = f<string>; // ((a: string) => string) | ((a: string, b: number) => string[]])
300
325
>fs : ((a: string) => string) | ((a: string, b: number) => string[])
326
+ >f<string> : ((a: string) => string) | ((a: string, b: number) => string[])
301
327
>f : (<T>(a: T) => T) | (<U>(a: U, b: number) => U[])
302
328
}
303
329
@@ -310,6 +336,7 @@ function f31(f: (<T>(a: T) => T) | ((a: string, b: number) => string[])) {
310
336
311
337
let fs = f<string>; // Error, '(a: string, b: number) => string[]' has no applicable signatures
312
338
>fs : ((a: string) => string) | {}
339
+ >f<string> : ((a: string) => string) | {}
313
340
>f : (<T>(a: T) => T) | ((a: string, b: number) => string[])
314
341
}
315
342
@@ -321,6 +348,7 @@ function f32(f: (<T>(a: T) => T) | { x: string }) {
321
348
322
349
let fs = f<string>; // ((a: string) => string) | { x: string }
323
350
>fs : { x: string; } | ((a: string) => string)
351
+ >f<string> : { x: string; } | ((a: string) => string)
324
352
>f : { x: string; } | (<T>(a: T) => T)
325
353
}
326
354
@@ -332,6 +360,7 @@ function f33(f: { x: string } | { y: string }) {
332
360
333
361
let fs = f<string>; // Error, no applicable signatures
334
362
>fs : { x: string; } | { y: string; }
363
+ >f<string> : { x: string; } | { y: string; }
335
364
>f : { x: string; } | { y: string; }
336
365
}
337
366
@@ -344,6 +373,7 @@ function f34(f: (new <T>(a: T) => T) | (new <U>(a: U, b: number) => U[])) {
344
373
345
374
let fs = f<string>; // (new (a: string) => string) | ((a: string, b: number) => string[]])
346
375
>fs : (new (a: string) => string) | (new (a: string, b: number) => string[])
376
+ >f<string> : (new (a: string) => string) | (new (a: string, b: number) => string[])
347
377
>f : (new <T>(a: T) => T) | (new <U>(a: U, b: number) => U[])
348
378
}
349
379
@@ -356,6 +386,7 @@ function f35(f: (new <T>(a: T) => T) | (<U>(a: U, b: number) => U[])) {
356
386
357
387
let fs = f<string>; // (new (a: string) => string) | ((a: string, b: number) => string[]])
358
388
>fs : (new (a: string) => string) | ((a: string, b: number) => string[])
389
+ >f<string> : (new (a: string) => string) | ((a: string, b: number) => string[])
359
390
>f : (new <T>(a: T) => T) | (<U>(a: U, b: number) => U[])
360
391
}
361
392
@@ -368,6 +399,7 @@ function f36(f: (new <T>(a: T) => T) | ((a: string, b: number) => string[])) {
368
399
369
400
let fs = f<string>; // Error, '(a: string, b: number) => string[]' has no applicable signatures
370
401
>fs : (new (a: string) => string) | {}
402
+ >f<string> : (new (a: string) => string) | {}
371
403
>f : (new <T>(a: T) => T) | ((a: string, b: number) => string[])
372
404
}
373
405
@@ -380,6 +412,7 @@ function f37(f: (<T>(a: T) => T) | (new (a: string, b: number) => string[])) {
380
412
381
413
let fs = f<string>; // Error, 'new (a: string, b: number) => string[]' has no applicable signatures
382
414
>fs : ((a: string) => string) | {}
415
+ >f<string> : ((a: string) => string) | {}
383
416
>f : (<T>(a: T) => T) | (new (a: string, b: number) => string[])
384
417
}
385
418
@@ -392,6 +425,7 @@ function f38<T extends (<A>(x: A) => A) | (<B>(x: B) => B[]), U>(f: T | U | (<C>
392
425
393
426
let fs = f<string>; // U | ((x: string) => string) | ((x: string) => string[]) | ((x: string) => string[][])
394
427
>fs : U | ((x: string) => string) | ((x: string) => string[]) | ((x: string) => string[][])
428
+ >f<string> : U | ((x: string) => string) | ((x: string) => string[]) | ((x: string) => string[][])
395
429
>f : T | U | (<C>(x: C) => C[][])
396
430
}
397
431
0 commit comments