diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index df4f99fbb3..18942e8ce5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14054,9 +14054,20 @@ namespace ts { } if (isHeritageClauseElementIdentifier(entityName)) { - let meaning = entityName.parent.kind === SyntaxKind.ExpressionWithTypeArguments ? - (SymbolFlags.Value | SymbolFlags.Type) : - SymbolFlags.Namespace; + let meaning = SymbolFlags.None; + + // In an interface or class, we're definitely interested in a type. + if (entityName.parent.kind === SyntaxKind.ExpressionWithTypeArguments) { + meaning = SymbolFlags.Type; + + // In a class 'extends' clause we are also looking for a value. + if (isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { + meaning |= SymbolFlags.Value; + } + } + else { + meaning = SymbolFlags.Namespace; + } meaning |= SymbolFlags.Alias; return resolveEntityName(entityName, meaning);