intellisense能力取决于语言模式、项目结构、类型定义路径及语言服务器是否正确触发;js/ts项目需配置jsconfig.json或tsconfig.json,确保moduleresolution、esmoduleinterop等选项匹配esm/commonjs,且文件位于工作区根目录,右下角语言模式须为typescript或javascript而非plain text。

IntelliSense 不是“装了插件就自动变聪明”,它的真实能力取决于你有没有把上下文准确告诉 VSCode —— 包括语言模式、项目结构、类型定义路径,以及是否触发了正确的语言服务器。
为什么 import 补全不出现或跳转失败
常见于 JS/TS 项目缺失配置文件,或语言服务没识别到模块语义。VSCode 默认按 CommonJS 解析,但现代包多用 ESM;若 package.json 有 "type": "module",而 tsconfig.json 没配 "moduleResolution": "node" 或 "esModuleInterop": true,路径补全和符号跳转就会断掉。
-
jsconfig.json或tsconfig.json必须存在于工作区根目录(子文件夹里的同名配置默认被忽略) - 确认右下角状态栏显示的是
TypeScript或JavaScript (ES6),不是Plain Text - 对 JS 项目,至少要有:
{"compilerOptions": {"allowJs": true, "checkJs": true}} - 对 TS 项目,确保
include覆盖源码路径,且types字段或typeRoots正确指向@types目录
useAuth() 解构后没有 user?.name 提示
VSCode 不会运行代码,只靠静态分析 + JSDoc 推导类型。如果自定义 Hook 没写 @returns 或 @type 注释,返回值就是 any,后续所有属性访问都失去提示。
- 在函数签名上方加
/** @returns {User} */,比在函数体内写const user = /** @type {User} */ (res)更可靠 - 避免用
const result = useAuth(); const { user } = result;这种中间解构,它切断了类型链;优先用const { user } = useAuth(); - 若 Hook 返回对象含可选字段,用
/** @type {{ user?: User }} */显式标注,否则user?.name中的?可能被忽略
第三方包(如 lodash-es)点不出方法
不是所有 npm 包自带类型定义,即使有,VSCode 也只加载 package.json 中 types 或 typings 字段指定的入口,或默认找 index.d.ts。路径错配或类型缺失都会导致补全失效。
- 先查包的
package.json是否含"types": "./dist/index.d.ts"类字段 - 缺失类型?装对应
@types/xxx,注意命名一致性(lodash-es→@types/lodash-es) - 装了仍无效?检查
node_modules/@types/lodash-es是否真实存在,且tsconfig.json的"typeRoots"包含node_modules/@types - 某些包(如
zod)类型直接内嵌在 JS 文件里,需确保"resolveJsonModule": true和"allowSyntheticDefaultImports": true已启用
最常被忽略的其实是“工作区层级”:VSCode 的 IntelliSense 在多文件夹工作区中,只认最外层的 tsconfig.json,不会递归合并子文件夹配置。哪怕你每个子项目都有完整配置,只要没提升到根目录,类型感知就大概率降级为局部字符串匹配。











