VS Code 依赖项目本地 tsc 和 tsconfig.json 提供类型检查;需安装 TypeScript、选择工作区版本、配置 strict 等选项,并排查文件包含、多配置冲突、@ts-nocheck 等导致不报错的原因。

VS Code 本身不执行 TypeScript 类型检查,它依赖你项目中安装的 tsc(TypeScript 编译器)和本地 tsconfig.json 配置来提供实时类型提示与错误标记。所谓“开启严格模式”,本质是配置 tsconfig.json 中的若干布尔开关,并确保 VS Code 正确识别该配置。
确认项目已安装 TypeScript 且使用本地版本
VS Code 默认可能用内置 TS 版本(常较旧),导致严格模式行为不一致或报错不全:
- 在项目根目录运行
npm install --save-dev typescript(或yarn add -D typescript) - 打开 VS Code 命令面板(
Ctrl+Shift+P/Cmd+Shift+P),输入 “TypeScript: Select TypeScript Version”,选中 “Use Workspace Version” - 检查状态栏右下角:应显示类似 “TS 5.3.3 (Workspace)” 而非 “Bundled”
tsconfig.json 中启用严格模式的核心选项
"strict": true 是总开关,但实际生效依赖它展开的子选项。仅开 strict 可能不够——某些编辑器或构建工具会忽略未显式声明的子项。推荐显式列出关键项:
-
"strict": true(启用全部严格检查,但部分子项仍可被单独覆盖) -
"noImplicitAny": true(禁止隐式any,函数参数/返回值/变量无注解时报错) -
"strictNullChecks": true(null和undefined不再是所有类型的子类型) -
"strictFunctionTypes": true(函数参数双向协变改为逆变,捕获常见回调类型错误) -
"strictBindCallApply": true(校验bind/call/apply的参数类型) -
"alwaysStrict": true(所有文件启用 ES strict mode,影响this类型推导)
注意:"strict" 启用后,"noImplicitThis"、"strictPropertyInitialization" 等也会默认开启,但若你用了类属性装饰器或构造函数赋值逻辑复杂,建议显式设为 true 并配合 !: 断言或初始化处理。
VS Code 不报错?检查这几个隐藏点
即使 tsconfig.json 配置正确,VS Code 也可能“静默跳过”类型检查:
- 文件没被
tsconfig.json包含:检查"include"或"files"字段是否覆盖你的.ts文件路径(例如漏掉src/**/*) - 存在多个
tsconfig.json:VS Code 按文件路径向上查找最近的一个,父目录的配置可能意外覆盖当前项目配置 - 文件以
// @ts-nocheck开头:完全禁用该文件的类型检查,删掉或改用// @ts-ignore(仅忽略下一行) - TS Server 崩溃或卡住:命令面板执行 “TypeScript: Restart TS server”
- JS 文件中的类型检查未启用:如需在
.js中用 JSDoc 类型标注并检查,需在tsconfig.json中加"allowJs": true和"checkJs": true
严格模式不是越严越好——比如 strictPropertyInitialization 在 React Class 组件中常需配合 ! 断言,而 noImplicitReturns 会要求每个代码分支都有返回值。真正关键的是:确保团队共享同一份 tsconfig.json,且 CI 流程运行 tsc --noEmit 做最终校验,而不是只依赖 VS Code 的实时提示。








