diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index bfef27a9102..85882c495b6 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1063,7 +1063,7 @@ namespace ts { // Get 'y', the property name, and add it to the type of the class let propertyName = (node.left).name; let prototypeSymbol = declareSymbol(funcSymbol.members, funcSymbol, (node.left).expression, SymbolFlags.HasMembers, SymbolFlags.None); - declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method | SymbolFlags.Property, SymbolFlags.None); + declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method, SymbolFlags.None); } function bindCallExpression(node: CallExpression) { diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 24da884a330..f0bdd48afa7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3843,6 +3843,11 @@ namespace ts { } } result.push(getSignatureFromDeclaration(node)); + break; + + case SyntaxKind.PropertyAccessExpression: + // Class inference from ClassName.prototype.methodName = expr + return getSignaturesOfType(checkExpressionCached((node.parent).right), SignatureKind.Call); } } return result;