@@ -42,7 +42,6 @@ function assertSymbol(x: symbol) {
42
42
function assertFunction(x: Function) {
43
43
>assertFunction : (x: Function) => Function
44
44
>x : Function
45
- >Function : Function
46
45
47
46
return x;
48
47
>x : Function
@@ -67,7 +66,6 @@ function assertUndefined(x: undefined) {
67
66
function assertAll(x: Basic) {
68
67
>assertAll : (x: Basic) => Basic
69
68
>x : Basic
70
- >Basic : Basic
71
69
72
70
return x;
73
71
>x : Basic
@@ -91,12 +89,10 @@ function assertBooleanOrObject(x: boolean | object) {
91
89
92
90
type Basic = number | boolean | string | symbol | object | Function | undefined;
93
91
>Basic : Basic
94
- >Function : Function
95
92
96
93
function testUnion(x: Basic) {
97
94
>testUnion : (x: Basic) => void
98
95
>x : Basic
99
- >Basic : Basic
100
96
101
97
switch (typeof x) {
102
98
>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -152,10 +148,7 @@ function testUnion(x: Basic) {
152
148
153
149
function testExtendsUnion<T extends Basic>(x: T) {
154
150
>testExtendsUnion : <T extends Basic>(x: T) => void
155
- >T : T
156
- >Basic : Basic
157
151
>x : T
158
- >T : T
159
152
160
153
switch (typeof x) {
161
154
>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -276,7 +269,6 @@ function a1(x: string | object | undefined) {
276
269
function testUnionExplicitDefault(x: Basic) {
277
270
>testUnionExplicitDefault : (x: Basic) => void
278
271
>x : Basic
279
- >Basic : Basic
280
272
281
273
switch (typeof x) {
282
274
>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -316,7 +308,6 @@ function testUnionExplicitDefault(x: Basic) {
316
308
function testUnionImplicitDefault(x: Basic) {
317
309
>testUnionImplicitDefault : (x: Basic) => string | object | undefined
318
310
>x : Basic
319
- >Basic : Basic
320
311
321
312
switch (typeof x) {
322
313
>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -354,10 +345,7 @@ function testUnionImplicitDefault(x: Basic) {
354
345
355
346
function testExtendsExplicitDefault<T extends Basic>(x: T) {
356
347
>testExtendsExplicitDefault : <T extends Basic>(x: T) => void
357
- >T : T
358
- >Basic : Basic
359
348
>x : T
360
- >T : T
361
349
362
350
switch (typeof x) {
363
351
>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -397,10 +385,7 @@ function testExtendsExplicitDefault<T extends Basic>(x: T) {
397
385
398
386
function testExtendsImplicitDefault<T extends Basic>(x: T) {
399
387
>testExtendsImplicitDefault : <T extends Basic>(x: T) => string | number | boolean | symbol | object | undefined
400
- >T : T
401
- >Basic : Basic
402
388
>x : T
403
- >T : T
404
389
405
390
switch (typeof x) {
406
391
>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -448,8 +433,6 @@ type R = { x: string, y: number }
448
433
function exhaustiveChecks(x: number | string | L | R): string {
449
434
>exhaustiveChecks : (x: string | number | R | L) => string
450
435
>x : string | number | R | L
451
- >L : L
452
- >R : R
453
436
454
437
switch (typeof x) {
455
438
>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -483,11 +466,7 @@ function exhaustiveChecks(x: number | string | L | R): string {
483
466
484
467
function exhaustiveChecksGenerics<T extends L | R | number | string>(x: T): string {
485
468
>exhaustiveChecksGenerics : <T extends string | number | R | L>(x: T) => string
486
- >T : T
487
- >L : L
488
- >R : R
489
469
>x : T
490
- >T : T
491
470
492
471
switch (typeof x) {
493
472
>typeof x : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -511,7 +490,6 @@ function exhaustiveChecksGenerics<T extends L | R | number | string>(x: T): stri
511
490
>(x as L) : L
512
491
>x as L : L
513
492
>x : T
514
- >L : L
515
493
>42 : 42
516
494
517
495
case 'object': return (x as R).x; // Can't narrow generic
@@ -520,22 +498,13 @@ function exhaustiveChecksGenerics<T extends L | R | number | string>(x: T): stri
520
498
>(x as R) : R
521
499
>x as R : R
522
500
>x : T
523
- >R : R
524
501
>x : string
525
502
}
526
503
}
527
504
528
505
function multipleGeneric<X extends L, Y extends R>(xy: X | Y): [X, string] | [Y, number] {
529
506
>multipleGeneric : <X extends L, Y extends R>(xy: X | Y) => [X, string] | [Y, number]
530
- >X : X
531
- >L : L
532
- >Y : Y
533
- >R : R
534
507
>xy : X | Y
535
- >X : X
536
- >Y : Y
537
- >X : X
538
- >Y : Y
539
508
540
509
switch (typeof xy) {
541
510
>typeof xy : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -566,17 +535,7 @@ function multipleGeneric<X extends L, Y extends R>(xy: X | Y): [X, string] | [Y,
566
535
567
536
function multipleGenericFuse<X extends L | number, Y extends R | number>(xy: X | Y): [X, number] | [Y, string] | [(X | Y)] {
568
537
>multipleGenericFuse : <X extends number | L, Y extends number | R>(xy: X | Y) => [X, number] | [Y, string] | [X | Y]
569
- >X : X
570
- >L : L
571
- >Y : Y
572
- >R : R
573
538
>xy : X | Y
574
- >X : X
575
- >Y : Y
576
- >X : X
577
- >Y : Y
578
- >X : X
579
- >Y : Y
580
539
581
540
switch (typeof xy) {
582
541
>typeof xy : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
@@ -603,15 +562,7 @@ function multipleGenericFuse<X extends L | number, Y extends R | number>(xy: X |
603
562
604
563
function multipleGenericExhaustive<X extends L, Y extends R>(xy: X | Y): [X, string] | [Y, number] {
605
564
>multipleGenericExhaustive : <X extends L, Y extends R>(xy: X | Y) => [X, string] | [Y, number]
606
- >X : X
607
- >L : L
608
- >Y : Y
609
- >R : R
610
565
>xy : X | Y
611
- >X : X
612
- >Y : Y
613
- >X : X
614
- >Y : Y
615
566
616
567
switch (typeof xy) {
617
568
>typeof xy : "string" | "number" | "boolean" | "symbol" | "undefined" | "object" | "function"
0 commit comments