Avoid incorrectly reusing assertion nodes from property assignments (#60576)

This commit is contained in:
Mateusz Burzyński
2024-12-04 21:04:14 +01:00
committed by GitHub
parent 6b1ea96b94
commit 676d329948
6 changed files with 252 additions and 3 deletions

View File

@@ -706,12 +706,12 @@ export function createSyntacticTypeNodeBuilder(
}
if (!result && node.kind === SyntaxKind.PropertyAssignment) {
const initializer = node.initializer;
const type = isJSDocTypeAssertion(initializer) ? getJSDocTypeAssertionType(initializer) :
const assertionNode = isJSDocTypeAssertion(initializer) ? getJSDocTypeAssertionType(initializer) :
initializer.kind === SyntaxKind.AsExpression || initializer.kind === SyntaxKind.TypeAssertionExpression ? (initializer as AsExpression | TypeAssertion).type :
undefined;
if (type && !isConstTypeReference(type)) {
result = serializeExistingTypeNode(type, context);
if (assertionNode && !isConstTypeReference(assertionNode) && resolver.canReuseTypeNodeAnnotation(context, node, assertionNode, symbol)) {
result = serializeExistingTypeNode(assertionNode, context);
}
}
return result ?? inferTypeOfDeclaration(node, symbol, context, /*reportFallback*/ false);