VSCode本身不编译TypeScript,必须依赖本地tsc或ts-node;关键在于正确配置tsconfig.json(含strict、outDir、rootDir、sourceMap等)、选用项目本地TS版本并重启TS Server,否则将出现编辑器不报错但终端编译失败、断点失效等问题。

VSCode 本身不编译 TypeScript,必须依赖本地 tsc 或 ts-node;没配好 tsconfig.json 或没选对 TypeScript 版本,就会出现“编辑器里不报错,终端里 tsc 报错”“F5 调试断点灰掉”这类问题。
确认 VSCode 正在用项目本地的 TypeScript 版本
VSCode 默认可能用内置或全局 TS 语言服务,和你 npx tsc 的行为不一致——这是大多数类型检查失效的根源。
- 打开任意
.ts文件,右下角点击 TypeScript 版本号(如TS 5.4.5) - 选择 Use Workspace Version
- 确保项目已安装:运行
npm install --save-dev typescript - 如果仍不识别,手动在 VSCode 设置中指定
typescript.tsdk路径,例如./node_modules/typescript/lib
tsconfig.json 必须存在且关键字段不能漏
没有 tsconfig.json,VSCode 只做语法高亮;字段配错,路径别名跳转失败、sourceMap 断点不起作用全都会发生。
-
"strict": true—— 不开这个,any泛滥、未初始化属性无提示,波浪线基本形同虚设 -
"outDir": "./dist"和"rootDir": "./src"必须显式设置,否则编译输出混乱,launch.json里的outFiles就匹配不上 -
"sourceMap": true是调试前提,但光有它不够:还要配合launch.json中的outFiles和正确的program路径 -
"include": ["src/**/*"]要加引号、用正斜杠;写成src\**\*或src/*/会漏文件
launch.json 调试配置必须匹配编译输出路径
VSCode 调试器靠 .js.map 文件把运行时位置映射回 .ts 源码,outFiles 配错,断点就永远是“未绑定”。
-
type必须是pwa-node(新版推荐),不是旧版的node -
program指向的是.ts入口文件路径,比如"${workspaceFolder}/src/index.ts" -
preLaunchTask要对应tasks.json中定义的构建任务(如tsc: build - tsconfig.json),否则调试前没生成.js和.js.map -
outFiles必须和tsconfig.json中的outDir一致,且用 glob 匹配,例如"${workspaceFolder}/dist/**/*.js"(注意双星号)
用 ts-node 启动更轻量,但类型检查默认关闭
如果你不想每次改代码都手动编译,ts-node 是更快的替代方案,但它绕过了 tsc 类型检查,且某些高级语法(如装饰器、export * as ns)可能不被支持。
- 安装:
npm install --save-dev ts-node @types/node - 基础运行:
npx ts-node src/index.ts—— 快,但类型错误静默忽略 - 带类型检查运行:
npx ts-node --no-cache --files src/index.ts,会实时报TS2322这类错误 - 调试配置中去掉
outFiles,因为不生成.js文件;改用"runtimeExecutable": "npx"和"args": ["ts-node", "${workspaceFolder}/src/index.ts"]
最常被忽略的其实是 tsconfig.json 中 sourceMap 和 outDir 的一致性,以及 VSCode 状态栏里那个小小的 TypeScript 版本号——点一下,选错版本,后面所有配置都白搭。


















