Skip to content

Commit 9737389

Browse files
committed
Add isOptionalUninitializedParameterProperty
Improves declaration emit and code readability
1 parent e8a5bd2 commit 9737389

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

src/compiler/checker.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23008,6 +23008,13 @@ namespace ts {
2300823008
!(getModifierFlags(parameter) & ModifierFlags.ParameterPropertyModifier);
2300923009
}
2301023010

23011+
function isOptionalUninitializedParameterProperty(parameter: ParameterDeclaration) {
23012+
return strictNullChecks &&
23013+
isOptionalParameter(parameter) &&
23014+
!parameter.initializer &&
23015+
!!(getModifierFlags(parameter) & ModifierFlags.ParameterPropertyModifier);
23016+
}
23017+
2301123018
function getNodeCheckFlags(node: Node): NodeCheckFlags {
2301223019
return getNodeLinks(node).flags;
2301323020
}
@@ -23217,6 +23224,7 @@ namespace ts {
2321723224
isDeclarationVisible,
2321823225
isImplementationOfOverload,
2321923226
isRequiredInitializedParameter,
23227+
isOptionalUninitializedParameterProperty,
2322023228
writeTypeOfDeclaration,
2322123229
writeReturnTypeOfSignatureDeclaration,
2322223230
writeTypeOfExpression,

src/compiler/declarationEmitter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ namespace ts {
340340
// these types may need to add `undefined`.
341341
const shouldUseResolverType = declaration.kind === SyntaxKind.Parameter &&
342342
(resolver.isRequiredInitializedParameter(declaration as ParameterDeclaration) ||
343-
(getModifierFlags(declaration) & ModifierFlags.ParameterPropertyModifier && resolver.isOptionalParameter(declaration as ParameterDeclaration)));
343+
resolver.isOptionalUninitializedParameterProperty(declaration as ParameterDeclaration));
344344
if (type && !shouldUseResolverType) {
345345
// Write the type
346346
emitType(type);

src/compiler/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2814,6 +2814,7 @@ namespace ts {
28142814
collectLinkedAliases(node: Identifier): Node[];
28152815
isImplementationOfOverload(node: FunctionLikeDeclaration): boolean | undefined;
28162816
isRequiredInitializedParameter(node: ParameterDeclaration): boolean;
2817+
isOptionalUninitializedParameterProperty(node: ParameterDeclaration): boolean;
28172818
writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
28182819
writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
28192820
writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;

0 commit comments

Comments
 (0)