Add | undefined to all optional properties too

in declarationEmitter.ts
This commit is contained in:
Nathan Shively-Sanders
2017-01-05 11:15:01 -08:00
parent e0bf73f79e
commit 156d5a9043
4 changed files with 12 additions and 10 deletions

View File

@@ -1593,9 +1593,11 @@ namespace ts {
emitTypeOfVariableDeclarationFromTypeLiteral(node);
}
else if (!hasModifier(node.parent, ModifierFlags.Private)) {
// use the checker's type, not the declared type, for an initialized parameter (that isn't a parameter property)
const isInitializedParameter = node.initializer && !(getModifierFlags(node) & ModifierFlags.ParameterPropertyModifier);
const typeNode = isInitializedParameter ? undefined : node.type;
// use the checker's type, not the declared type,
// for optional parameters and initialized ones that aren't a parameter property
const typeShouldAddUndefined = resolver.isOptionalParameter(node) ||
node.initializer && !(getModifierFlags(node) & ModifierFlags.ParameterPropertyModifier);
const typeNode = typeShouldAddUndefined ? undefined : node.type;
writeTypeOfDeclaration(node, typeNode, getParameterDeclarationTypeVisibilityError);
}

View File

@@ -88,7 +88,7 @@ function removeNothing(y) {
//// [defaultParameterAddsUndefinedWithStrictNullChecks.d.ts]
declare function f(addUndefined1?: string | undefined, addUndefined2?: number): number;
declare function f(addUndefined1?: string | undefined, addUndefined2?: number | undefined): number;
declare function g(addUndefined: string | undefined, addDefined: number): number;
declare let total: number;
declare function foo1(x: string | undefined, b: number): void;

View File

@@ -36,7 +36,7 @@ function f2(_a) {
declare function f1({a, b}?: {
a: number;
b: string;
}): void;
} | undefined): void;
declare function f2({a, b}?: {
a: number;
b: number;
@@ -49,11 +49,11 @@ interface QueryMetadata {
}
interface QueryMetadataFactory {
(selector: Type | string, {descendants, read}?: {
descendants?: boolean;
descendants?: boolean | undefined;
read?: any;
}): ParameterDecorator;
} | undefined): ParameterDecorator;
new (selector: Type | string, {descendants, read}?: {
descendants?: boolean;
descendants?: boolean | undefined;
read?: any;
}): QueryMetadata;
} | undefined): QueryMetadata;
}

View File

@@ -132,7 +132,7 @@ declare class Bar {
a: number;
b?: number;
c?: number | undefined;
constructor(d?: number, e?: number);
constructor(d?: number | undefined, e?: number);
f(): number;
g?(): number;
h?(): number;