diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2cdee150af6..b2948d6bfce 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7567,8 +7567,8 @@ namespace ts { function getReturnTypeOfTypeTag(node: SignatureDeclaration | JSDocSignature) { const typeTag = isInJavaScriptFile(node) ? getJSDocTypeTag(node) : undefined; - const signatures = typeTag && typeTag.typeExpression && getSignaturesOfType(getTypeFromTypeNode(typeTag.typeExpression), SignatureKind.Call); - return signatures && signatures.length === 1 ? getReturnTypeOfSignature(signatures[0]) : undefined; + const signature = typeTag && typeTag.typeExpression && getSingleCallSignature(getTypeFromTypeNode(typeTag.typeExpression)); + return signature && getReturnTypeOfSignature(getErasedSignature(signature)); } function containsArgumentsReference(declaration: SignatureDeclaration): boolean { @@ -7698,7 +7698,7 @@ namespace ts { function getReturnTypeFromAnnotationOrBody(declaration: SignatureDeclaration | JSDocSignature) { if (declaration.kind === SyntaxKind.Constructor) { - return getDeclaredTypeOfClassOrInterface(getMergedSymbol((declaration.parent).symbol)) + return getDeclaredTypeOfClassOrInterface(getMergedSymbol((declaration.parent).symbol)); } if (isJSDocConstructSignature(declaration)) { return getTypeFromTypeNode((declaration.parameters[0] as ParameterDeclaration).type!); // TODO: GH#18217