diff --git a/src/services/completions.ts b/src/services/completions.ts
index c7310e0c8b3f0..67b9f0d94ce80 100644
--- a/src/services/completions.ts
+++ b/src/services/completions.ts
@@ -2012,7 +2012,9 @@ namespace ts.Completions {
// List of property symbols of base type that are not private and already implemented
const baseSymbols = flatMap(getAllSuperTypeNodes(decl), baseTypeNode => {
const type = typeChecker.getTypeAtLocation(baseTypeNode);
- return type && typeChecker.getPropertiesOfType(classElementModifierFlags & ModifierFlags.Static ? typeChecker.getTypeOfSymbolAtLocation(type.symbol, decl) : type);
+ return classElementModifierFlags & ModifierFlags.Static ?
+ type?.symbol && typeChecker.getPropertiesOfType(typeChecker.getTypeOfSymbolAtLocation(type.symbol, decl)) :
+ type && typeChecker.getPropertiesOfType(type);
});
symbols = filterClassMembersList(baseSymbols, decl.members, classElementModifierFlags);
}
diff --git a/tests/cases/fourslash/completionEntryForClassMembers_StaticWhenBaseTypeIsNotResolved.ts b/tests/cases/fourslash/completionEntryForClassMembers_StaticWhenBaseTypeIsNotResolved.ts
new file mode 100644
index 0000000000000..739c60dd51e27
--- /dev/null
+++ b/tests/cases/fourslash/completionEntryForClassMembers_StaticWhenBaseTypeIsNotResolved.ts
@@ -0,0 +1,35 @@
+///
{ } +//// class Component
{ +//// static contextType?: any; +//// context: any; +//// constructor(props: Readonly
);
+//// setState ) => (Pick, props: Readonly | S | null)) | (Pick | S | null),
+//// callback?: () => void
+//// ): void;
+//// }
+//// }
+
+// @Filename: /a.ts
+//// import React from 'react'
+//// class Slider extends React.Component {
+//// static defau/**/ltProps = {
+//// onMouseDown: () => { },
+//// onMouseUp: () => { },
+//// unit: 'px',
+//// }
+//// handleChange = () => 10;
+//// }
+
+verify.completions({
+ marker: "",
+ isNewIdentifierLocation: true,
+ exact: completion.classElementKeywords,
+});
\ No newline at end of file