VSCode的IntelliSense需语言服务、类型定义和项目配置协同;JS/TS项目须配置jsconfig.json或tsconfig.json,明确模块解析、类型导入及类型根路径,否则import提示、跳转、自定义Hook类型推导均失效。

VSCode 的智能感知(IntelliSense)不是开箱即用就“全量精准”的,它依赖语言服务、类型定义和项目配置三者协同。没配对 jsconfig.json 或 tsconfig.json,TypeScript/JavaScript 文件里连基本的模块导入提示都可能失效。
为什么 import 提示不出现或跳转失败
常见于 JS 项目未声明模块解析规则,或 TS 项目缺少 "moduleResolution": "node"。VSCode 默认按 CommonJS 解析,但现代包多用 ESM 导出,若 package.json 里有 "type": "module" 却没在 tsconfig.json 中同步设置,import 行会失去路径补全和符号跳转。
- 检查
tsconfig.json是否含"allowSyntheticDefaultImports": true和"esModuleInterop": true(尤其对接 CJS 包时) - JS 项目务必加
jsconfig.json,至少包含{"compilerOptions": {"checkJs": true, "allowJs": true}} - 确认当前文件后缀是
.ts或.tsx(TS 服务不会激活.js文件,除非jsconfig.json存在)
如何让自定义 Hook 或工具函数被正确推导类型
VSCode 不会自动读取 JSDoc 类型注释以外的运行时逻辑。比如一个返回对象的 useAuth(),若没写 @returns 或用 @type 标注返回值,解构时 user?.name 就不会有属性提示。
- 优先用 TypeScript 编写:类型即文档,VSCode 直接消费
.d.ts或内联类型 - JS 中必须补全 JSDoc:
/** @returns {{ user: { name: string }, login: () => void }} */ - 避免在函数体内用
/** @type {xxx} */临时标注变量,应提至函数签名上方
node_modules 里的类型为何有时不生效
不是所有 npm 包自带类型定义;即使有,VSCode 也只加载 types 字段指向的入口,或默认找 index.d.ts。若包没提供类型,或类型文件路径错配,require('xxx') 后点不出方法。
- 先查包的
package.json是否含"types"或"typings"字段 - 缺失类型?手动装
@types/xxx(注意命名是否匹配,如lodash-es对应@types/lodash-es) - 装了仍无效?检查
node_modules/@types下对应目录是否存在,以及tsconfig.json的"typeRoots"是否覆盖该路径
最常被忽略的是工作区根目录下没有配置文件——VSCode 的 IntelliSense 在多文件夹工作区中,只认最外层的 tsconfig.json 或 jsconfig.json,子文件夹里的同名配置默认被忽略。










