VSCode启用TypeScript需项目根目录存在有效tsconfig.json,否则仅语法高亮;必须配置strict、baseUrl/paths、resolveJsonModule等关键字段,并手动重启TS Server才能实现完整类型检查与智能提示。

VSCode 里 TypeScript 不是“装了就能用”,而是“有 tsconfig.json 才算真正启用”——没这个文件,编辑器只做语法高亮;有了但配错,就会出现 import 报红、跳转失效、类型提示消失、tsc 和 VSCode 提示不一致等问题。
为什么 VSCode 不报错但 tsc 一堆错误?
VSCode 内置的 TypeScript 语言服务默认只检查当前打开的文件及其直接依赖(快速检查),而命令行 tsc 默认执行全量项目检查(受 tsconfig.json 全局控制)。两者行为不同步,是绝大多数“看着没问题却编译失败”的根源。
- 确保项目根目录存在
tsconfig.json,哪怕只是空对象{},否则 VSCode 可能 fallback 到宽松内置配置 - 检查
include字段是否漏写或路径错误,例如"src/**/*"必须加引号,斜杠方向必须是正斜杠(/) - 右下角点击 TypeScript 版本号,确认选的是 Use Workspace Version(即项目本地
node_modules/typescript),不是内置或全局版本 - 每次改完
tsconfig.json后,按Ctrl+Shift+P→ 输入TypeScript: Restart TS server手动重启服务
哪些 compilerOptions 字段不能省?
只设 target 和 module 是远远不够的。缺了关键字段,VSCode 的路径解析、类型提示、跳转逻辑会直接失效。
-
"strict": true:必须开。不开会导致隐式any、未初始化属性等隐患被忽略,VSCode 波浪线提示大幅减少 -
"baseUrl": "./"+"paths": { "@/*": ["src/*"] }:路径别名(如@/utils)要跳转、补全、识别模块,全靠这两个字段,且paths的 key 和 value 都必须带/* -
"resolveJsonModule": true:读 JSON 文件时,不加这个,VSCode 会报“无法找到模块” -
"skipLibCheck": false:设为true会跳过node_modules类型检查,第三方库的类型提示可能丢失或不准 -
"isolatedModules": true:尤其在用 esbuild/vite 等工具时必需,否则单文件编译可能出错
怎么让 @/ 路径别名在 VSCode 里正常跳转?
VSCode 的路径别名支持完全由 tsconfig.json 驱动,和 Webpack/Vite 的配置无关。它只认 baseUrl + paths 的绝对路径映射规则,且对 JS 文件默认无效。
-
baseUrl必须是相对tsconfig.json的路径,常见值为"./"或"./src",不能是"src"(缺./) -
paths的 key 必须以/*结尾,value 也必须以/*结尾,例如"@/*": ["src/*"],写成"@/": ["src/"]就不生效 - 如果项目含
.js文件且想复用别名,需额外加"allowJs": true和"checkJs": true,否则 JS 文件不走 TS 解析流程 - ESM 项目(
package.json里有"type": "module")要设"moduleResolution": "bundler"(TS 5.0+)或"node16",否则别名解析失败
调试时断点不命中 .ts 文件?
光有 "sourceMap": true 不够,launch.json 的路径映射必须和实际输出结构严格匹配,否则 Debugger 找不到对应的 .map 文件。
-
tsconfig.json中必须设"outDir"(如"./dist")和"sourceMap": true -
launch.json的outFiles字段要指向编译后 JS 路径,例如"${workspaceFolder}/dist/**/*.js" - 如果用了
"rootDir": "./src",确保outFiles和实际生成路径一致,别把dist/src/index.js错写成dist/index.js - 调试前先运行一次
npx tsc,确认.js和.js.map文件已生成且时间戳最新
最容易被忽略的是:VSCode 的 TypeScript 服务不会自动感知 tsconfig.json 的修改,也不会自动切换到工作区版本——这两步都得手动触发,而且每次改完都要重来。不重启 TS Server,所有配置都是白配。


















