diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 691462a6db..f3fba14221 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5090,9 +5090,6 @@ namespace ts { if (!isInJavaScriptFile(decl)) { return undefined; } - else if (isJSDocPropertyLikeTag(decl) && decl.typeExpression) { - return getTypeFromTypeNode(decl.typeExpression.type); - } // Handle certain special assignment kinds, which happen to union across multiple declarations: // * module.exports = expr // * exports.p = expr diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 9b4614f45c..536409b8a0 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -3358,7 +3358,9 @@ namespace ts { * parsed in a JavaScript file, gets the type annotation from JSDoc. */ export function getEffectiveTypeAnnotationNode(node: Node): TypeNode | undefined { - return (node as HasType).type || (isInJavaScriptFile(node) ? getJSDocType(node) : undefined); + const type = (node as HasType).type; + if (type || !isInJavaScriptFile(node)) return type; + return isJSDocPropertyLikeTag(node) ? node.typeExpression && node.typeExpression.type : getJSDocType(node); } export function getTypeAnnotationNode(node: Node): TypeNode | undefined {