@@ -86,6 +86,23 @@ function foo4(x: string | undefined = undefined, b: number) {
86
86
>undefined : Symbol(undefined)
87
87
}
88
88
89
+ type OptionalNullableString = string | null | undefined;
90
+ >OptionalNullableString : Symbol(OptionalNullableString, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 25, 1))
91
+
92
+ function allowsNull(val: OptionalNullableString = "") {
93
+ >allowsNull : Symbol(allowsNull, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 27, 56))
94
+ >val : Symbol(val, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 28, 20))
95
+ >OptionalNullableString : Symbol(OptionalNullableString, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 25, 1))
96
+
97
+ val = null;
98
+ >val : Symbol(val, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 28, 20))
99
+
100
+ val = 'string and null are both ok';
101
+ >val : Symbol(val, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 28, 20))
102
+ }
103
+ allowsNull(null); // still allows passing null
104
+ >allowsNull : Symbol(allowsNull, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 27, 56))
105
+
89
106
90
107
91
108
// .d.ts should have `string | undefined` for foo1, foo2, foo3 and foo4
@@ -107,35 +124,35 @@ foo4(undefined, 1);
107
124
108
125
109
126
function removeUndefinedButNotFalse(x = true) {
110
- >removeUndefinedButNotFalse : Symbol(removeUndefinedButNotFalse, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 33 , 19))
111
- >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 36 , 36))
127
+ >removeUndefinedButNotFalse : Symbol(removeUndefinedButNotFalse, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 40 , 19))
128
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43 , 36))
112
129
113
130
if (x === false) {
114
- >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 36 , 36))
131
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43 , 36))
115
132
116
133
return x;
117
- >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 36 , 36))
134
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43 , 36))
118
135
}
119
136
}
120
137
121
138
declare const cond: boolean;
122
- >cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 42 , 13))
139
+ >cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 49 , 13))
123
140
124
141
function removeNothing(y = cond ? true : undefined) {
125
- >removeNothing : Symbol(removeNothing, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 42 , 28))
126
- >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43 , 23))
127
- >cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 42 , 13))
142
+ >removeNothing : Symbol(removeNothing, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 49 , 28))
143
+ >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 50 , 23))
144
+ >cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 49 , 13))
128
145
>undefined : Symbol(undefined)
129
146
130
147
if (y !== undefined) {
131
- >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43 , 23))
148
+ >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 50 , 23))
132
149
>undefined : Symbol(undefined)
133
150
134
151
if (y === false) {
135
- >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43 , 23))
152
+ >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 50 , 23))
136
153
137
154
return y;
138
- >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43 , 23))
155
+ >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 50 , 23))
139
156
}
140
157
}
141
158
return true;
0 commit comments