VSCode导入导出自定义类时TypeScript IntelliSense失效问题咨询
问题解决方案
核心原因
IntelliSense 失效的根本原因是你封装的Editor类中,directus方法的返回值被显式声明为Promise<any>,TypeScript 遇到any类型时会丢弃所有类型信息,无法推导返回的 Directus 实例具体类型,自然不会生成对应智能提示。
修复方法
方案1:移除冗余的any类型标注,让TS自动推导返回类型
直接删除directus方法显式声明的Promise<any>返回类型,TypeScript 会根据返回值自动推导正确的 Directus 实例类型:
import { Directus } from '@directus/sdk'; export class Editor { public async directus() { let directus = new Directus("http://localhost:8055/"); await directus.auth.login({ email: "email@admin", password: "password", }); return directus } }
方案2:显式声明正确的返回类型
如果需要显式标注类型保证代码可读性,直接将返回类型指定为Promise<Directus>即可:
import { Directus } from '@directus/sdk'; export class Editor { public async directus(): Promise<Directus> { let directus = new Directus("http://localhost:8055/"); await directus.auth.login({ email: "email@admin", password: "password", }); return directus } }
使用验证
修改完成后,在test.ts中调用时需要先await异步方法拿到实例,即可正常触发智能提示:
import { Editor } from "."; const test = new Editor(); const directusIns = await test.directus(); // 此时输入directusIns.即可看到对应的Directus实例属性、方法提示
异常排查
如果修改后智能提示仍未恢复,按以下顺序排查:
- 检查项目
tsconfig.json的compilerOptions配置,确认没有开启会强制截断类型推导的特殊配置 - 确认VSCode使用的TypeScript版本和项目依赖的版本一致:点击编辑器右下角的TypeScript版本号,选择「使用工作区版本」
- 按下
Ctrl+Shift+P(Mac为Cmd+Shift+P)调出命令面板,执行「开发者:重载窗口」命令重启TS语言服务
内容的提问来源于stack exchange,提问作者Deano
相关产品推荐
相关产品推荐

