Skip to content

Commit 156d5a9

Browse files
committed
Add | undefined to all optional properties too
in declarationEmitter.ts
1 parent e0bf73f commit 156d5a9

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

src/compiler/declarationEmitter.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,9 +1593,11 @@ namespace ts {
15931593
emitTypeOfVariableDeclarationFromTypeLiteral(node);
15941594
}
15951595
else if (!hasModifier(node.parent, ModifierFlags.Private)) {
1596-
// use the checker's type, not the declared type, for an initialized parameter (that isn't a parameter property)
1597-
const isInitializedParameter = node.initializer && !(getModifierFlags(node) & ModifierFlags.ParameterPropertyModifier);
1598-
const typeNode = isInitializedParameter ? undefined : node.type;
1596+
// use the checker's type, not the declared type,
1597+
// for optional parameters and initialized ones that aren't a parameter property
1598+
const typeShouldAddUndefined = resolver.isOptionalParameter(node) ||
1599+
node.initializer && !(getModifierFlags(node) & ModifierFlags.ParameterPropertyModifier);
1600+
const typeNode = typeShouldAddUndefined ? undefined : node.type;
15991601
writeTypeOfDeclaration(node, typeNode, getParameterDeclarationTypeVisibilityError);
16001602
}
16011603

tests/baselines/reference/defaultParameterAddsUndefinedWithStrictNullChecks.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ function removeNothing(y) {
8888

8989

9090
//// [defaultParameterAddsUndefinedWithStrictNullChecks.d.ts]
91-
declare function f(addUndefined1?: string | undefined, addUndefined2?: number): number;
91+
declare function f(addUndefined1?: string | undefined, addUndefined2?: number | undefined): number;
9292
declare function g(addUndefined: string | undefined, addDefined: number): number;
9393
declare let total: number;
9494
declare function foo1(x: string | undefined, b: number): void;

tests/baselines/reference/destructureOptionalParameter.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ function f2(_a) {
3636
declare function f1({a, b}?: {
3737
a: number;
3838
b: string;
39-
}): void;
39+
} | undefined): void;
4040
declare function f2({a, b}?: {
4141
a: number;
4242
b: number;
@@ -49,11 +49,11 @@ interface QueryMetadata {
4949
}
5050
interface QueryMetadataFactory {
5151
(selector: Type | string, {descendants, read}?: {
52-
descendants?: boolean;
52+
descendants?: boolean | undefined;
5353
read?: any;
54-
}): ParameterDecorator;
54+
} | undefined): ParameterDecorator;
5555
new (selector: Type | string, {descendants, read}?: {
56-
descendants?: boolean;
56+
descendants?: boolean | undefined;
5757
read?: any;
58-
}): QueryMetadata;
58+
} | undefined): QueryMetadata;
5959
}

tests/baselines/reference/optionalMethods.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ declare class Bar {
132132
a: number;
133133
b?: number;
134134
c?: number | undefined;
135-
constructor(d?: number, e?: number);
135+
constructor(d?: number | undefined, e?: number);
136136
f(): number;
137137
g?(): number;
138138
h?(): number;

0 commit comments

Comments
 (0)