1
1
=== tests/cases/compiler/conditionalTypesSimplifyWhenTrivial.ts ===
2
2
const fn1 = <Params>(
3
- >fn1 : <Params>(params: Pick<Params, keyof Params>) => Params
4
- ><Params>( params: Pick<Params, Exclude<keyof Params, never>>,): Params => params : <Params>(params: Pick<Params, keyof Params>) => Params
3
+ >fn1 : <Params>(params: Pick<Params, Exclude< keyof Params, never> >) => Params
4
+ ><Params>( params: Pick<Params, Exclude<keyof Params, never>>,): Params => params : <Params>(params: Pick<Params, Exclude< keyof Params, never> >) => Params
5
5
6
6
params: Pick<Params, Exclude<keyof Params, never>>,
7
- >params : Pick<Params, keyof Params>
7
+ >params : Pick<Params, Exclude< keyof Params, never> >
8
8
9
9
): Params => params;
10
- >params : Pick<Params, keyof Params>
10
+ >params : Pick<Params, Exclude< keyof Params, never> >
11
11
12
12
function fn2<T>(x: Exclude<T, never>) {
13
- >fn2 : <T>(x: T ) => void
14
- >x : T
13
+ >fn2 : <T>(x: Exclude<T, never> ) => void
14
+ >x : Exclude<T, never>
15
15
16
16
var y: T = x;
17
17
>y : T
18
- >x : T
18
+ >x : Exclude<T, never>
19
19
20
20
x = y;
21
21
>x = y : T
22
- >x : T
22
+ >x : Exclude<T, never>
23
23
>y : T
24
24
}
25
25
26
26
const fn3 = <Params>(
27
- >fn3 : <Params>(params: Pick<Params, keyof Params>) => Params
28
- ><Params>( params: Pick<Params, Extract<keyof Params, keyof Params>>,): Params => params : <Params>(params: Pick<Params, keyof Params>) => Params
27
+ >fn3 : <Params>(params: Pick<Params, Extract< keyof Params, keyof Params> >) => Params
28
+ ><Params>( params: Pick<Params, Extract<keyof Params, keyof Params>>,): Params => params : <Params>(params: Pick<Params, Extract< keyof Params, keyof Params> >) => Params
29
29
30
30
params: Pick<Params, Extract<keyof Params, keyof Params>>,
31
- >params : Pick<Params, keyof Params>
31
+ >params : Pick<Params, Extract< keyof Params, keyof Params> >
32
32
33
33
): Params => params;
34
- >params : Pick<Params, keyof Params>
34
+ >params : Pick<Params, Extract< keyof Params, keyof Params> >
35
35
36
36
function fn4<T>(x: Extract<T, T>) {
37
- >fn4 : <T>(x: T ) => void
38
- >x : T
37
+ >fn4 : <T>(x: Extract<T, T> ) => void
38
+ >x : Extract<T, T>
39
39
40
40
var y: T = x;
41
41
>y : T
42
- >x : T
42
+ >x : Extract<T, T>
43
43
44
44
x = y;
45
45
>x = y : T
46
- >x : T
46
+ >x : Extract<T, T>
47
47
>y : T
48
48
}
49
49
@@ -57,101 +57,101 @@ type ExcludeWithDefault<T, U, D = never> = T extends U ? D : T;
57
57
>ExcludeWithDefault : ExcludeWithDefault<T, U, D>
58
58
59
59
const fn5 = <Params>(
60
- >fn5 : <Params>(params: Pick<Params, keyof Params>) => Params
61
- ><Params>( params: Pick<Params, ExcludeWithDefault<keyof Params, never>>,): Params => params : <Params>(params: Pick<Params, keyof Params>) => Params
60
+ >fn5 : <Params>(params: Pick<Params, ExcludeWithDefault< keyof Params, never, never> >) => Params
61
+ ><Params>( params: Pick<Params, ExcludeWithDefault<keyof Params, never>>,): Params => params : <Params>(params: Pick<Params, ExcludeWithDefault< keyof Params, never, never> >) => Params
62
62
63
63
params: Pick<Params, ExcludeWithDefault<keyof Params, never>>,
64
- >params : Pick<Params, keyof Params>
64
+ >params : Pick<Params, ExcludeWithDefault< keyof Params, never, never> >
65
65
66
66
): Params => params;
67
- >params : Pick<Params, keyof Params>
67
+ >params : Pick<Params, ExcludeWithDefault< keyof Params, never, never> >
68
68
69
69
function fn6<T>(x: ExcludeWithDefault<T, never>) {
70
- >fn6 : <T>(x: T ) => void
71
- >x : T
70
+ >fn6 : <T>(x: ExcludeWithDefault<T, never, never> ) => void
71
+ >x : ExcludeWithDefault<T, never, never>
72
72
73
73
var y: T = x;
74
74
>y : T
75
- >x : T
75
+ >x : ExcludeWithDefault<T, never, never>
76
76
77
77
x = y;
78
78
>x = y : T
79
- >x : T
79
+ >x : ExcludeWithDefault<T, never, never>
80
80
>y : T
81
81
}
82
82
83
83
const fn7 = <Params>(
84
- >fn7 : <Params>(params: Pick<Params, keyof Params>) => Params
85
- ><Params>( params: Pick<Params, ExtractWithDefault<keyof Params, keyof Params>>,): Params => params : <Params>(params: Pick<Params, keyof Params>) => Params
84
+ >fn7 : <Params>(params: Pick<Params, ExtractWithDefault< keyof Params, keyof Params, never> >) => Params
85
+ ><Params>( params: Pick<Params, ExtractWithDefault<keyof Params, keyof Params>>,): Params => params : <Params>(params: Pick<Params, ExtractWithDefault< keyof Params, keyof Params, never> >) => Params
86
86
87
87
params: Pick<Params, ExtractWithDefault<keyof Params, keyof Params>>,
88
- >params : Pick<Params, keyof Params>
88
+ >params : Pick<Params, ExtractWithDefault< keyof Params, keyof Params, never> >
89
89
90
90
): Params => params;
91
- >params : Pick<Params, keyof Params>
91
+ >params : Pick<Params, ExtractWithDefault< keyof Params, keyof Params, never> >
92
92
93
93
function fn8<T>(x: ExtractWithDefault<T, T>) {
94
- >fn8 : <T>(x: T ) => void
95
- >x : T
94
+ >fn8 : <T>(x: ExtractWithDefault<T, T, never> ) => void
95
+ >x : ExtractWithDefault<T, T, never>
96
96
97
97
var y: T = x;
98
98
>y : T
99
- >x : T
99
+ >x : ExtractWithDefault<T, T, never>
100
100
101
101
x = y;
102
102
>x = y : T
103
- >x : T
103
+ >x : ExtractWithDefault<T, T, never>
104
104
>y : T
105
105
}
106
106
107
107
type TemplatedConditional<TCheck, TExtends, TTrue, TFalse> = TCheck extends TExtends ? TTrue : TFalse;
108
108
>TemplatedConditional : TemplatedConditional<TCheck, TExtends, TTrue, TFalse>
109
109
110
110
const fn9 = <Params>(
111
- >fn9 : <Params>(params: Pick<Params, keyof Params>) => Params
112
- ><Params>( params: Pick<Params, TemplatedConditional<keyof Params, never, never, keyof Params>>,): Params => params : <Params>(params: Pick<Params, keyof Params>) => Params
111
+ >fn9 : <Params>(params: Pick<Params, TemplatedConditional< keyof Params, never, never, keyof Params> >) => Params
112
+ ><Params>( params: Pick<Params, TemplatedConditional<keyof Params, never, never, keyof Params>>,): Params => params : <Params>(params: Pick<Params, TemplatedConditional< keyof Params, never, never, keyof Params> >) => Params
113
113
114
114
params: Pick<Params, TemplatedConditional<keyof Params, never, never, keyof Params>>,
115
- >params : Pick<Params, keyof Params>
115
+ >params : Pick<Params, TemplatedConditional< keyof Params, never, never, keyof Params> >
116
116
117
117
): Params => params;
118
- >params : Pick<Params, keyof Params>
118
+ >params : Pick<Params, TemplatedConditional< keyof Params, never, never, keyof Params> >
119
119
120
120
function fn10<T>(x: TemplatedConditional<T, never, never, T>) {
121
- >fn10 : <T>(x: T ) => void
122
- >x : T
121
+ >fn10 : <T>(x: TemplatedConditional<T, never, never, T> ) => void
122
+ >x : TemplatedConditional<T, never, never, T>
123
123
124
124
var y: T = x;
125
125
>y : T
126
- >x : T
126
+ >x : TemplatedConditional<T, never, never, T>
127
127
128
128
x = y;
129
129
>x = y : T
130
- >x : T
130
+ >x : TemplatedConditional<T, never, never, T>
131
131
>y : T
132
132
}
133
133
134
134
const fn11 = <Params>(
135
- >fn11 : <Params>(params: Pick<Params, keyof Params>) => Params
136
- ><Params>( params: Pick<Params, TemplatedConditional<keyof Params, keyof Params, keyof Params, never>>,): Params => params : <Params>(params: Pick<Params, keyof Params>) => Params
135
+ >fn11 : <Params>(params: Pick<Params, TemplatedConditional< keyof Params, keyof Params, keyof Params, never> >) => Params
136
+ ><Params>( params: Pick<Params, TemplatedConditional<keyof Params, keyof Params, keyof Params, never>>,): Params => params : <Params>(params: Pick<Params, TemplatedConditional< keyof Params, keyof Params, keyof Params, never> >) => Params
137
137
138
138
params: Pick<Params, TemplatedConditional<keyof Params, keyof Params, keyof Params, never>>,
139
- >params : Pick<Params, keyof Params>
139
+ >params : Pick<Params, TemplatedConditional< keyof Params, keyof Params, keyof Params, never> >
140
140
141
141
): Params => params;
142
- >params : Pick<Params, keyof Params>
142
+ >params : Pick<Params, TemplatedConditional< keyof Params, keyof Params, keyof Params, never> >
143
143
144
144
function fn12<T>(x: TemplatedConditional<T, T, T, never>) {
145
- >fn12 : <T>(x: T ) => void
146
- >x : T
145
+ >fn12 : <T>(x: TemplatedConditional<T, T, T, never> ) => void
146
+ >x : TemplatedConditional<T, T, T, never>
147
147
148
148
var y: T = x;
149
149
>y : T
150
- >x : T
150
+ >x : TemplatedConditional<T, T, T, never>
151
151
152
152
x = y;
153
153
>x = y : T
154
- >x : T
154
+ >x : TemplatedConditional<T, T, T, never>
155
155
>y : T
156
156
}
157
157
0 commit comments