diff --git a/src/server/features/completionItemProvider.ts b/src/server/features/completionItemProvider.ts
index 5bca577..0a0f1df 100644
--- a/src/server/features/completionItemProvider.ts
+++ b/src/server/features/completionItemProvider.ts
@@ -310,21 +310,19 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP
     pre: string,
     option: any
   ): boolean {
-    if (triggerCharacter === '.') {
-      if (pre.match(/[\s\.'"]\.$/)) {
+    if (triggerCharacter && this.client.apiVersion.lt(API.v290)) {
+      if (triggerCharacter === '@') {
+        // trigger in string
+        if (option.synname && /string/i.test(option.synname)) {
+          return true
+        }
+        // make sure we are in something that looks like the start of a jsdoc comment
+        if (!pre.match(/^\s*\*[ ]?@/) && !pre.match(/\/\*\*+[ ]?@/)) {
+          return false
+        }
+      } else if (triggerCharacter === '<') {
         return false
       }
-    } else if (triggerCharacter === '@') {
-      // trigger in string
-      if (option.synname && /string/i.test(option.synname)) {
-        return true
-      }
-      // make sure we are in something that looks like the start of a jsdoc comment
-      if (!pre.match(/^\s*\*[ ]?@/) && !pre.match(/\/\*\*+[ ]?@/)) {
-        return false
-      }
-    } else if (triggerCharacter === '<') {
-      return false
     }
 
     return true