vscode中strict不报错是因为typescript语言服务未加载tsconfig.json;需确认使用工作区ts版本、tsconfig位于根目录、语法正确、include覆盖文件,并重启ts server。

VSCode 里 strict 不报错,基本不是配置写错了,而是 TypeScript 语言服务压根没加载你的 tsconfig.json。
确认 VSCode 正在用工作区 TypeScript 版本
VSCode 默认可能用内置(Bundled)版本,它不读项目 tsconfig.json,也不认 strict 设置。
- 右下角状态栏点击
TS版本号,必须看到类似TS 5.4.2 (Workspace)—— 如果是Bundled或Node module,说明没生效 - 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),运行TypeScript: Select TypeScript Version,选Use Workspace Version - 确保项目根目录已安装
typescript:npm install --save-dev typescript,否则 workspace 版本根本不存在
检查 tsconfig.json 是否被正确识别和加载
VSCode 只会从当前打开的文件夹向上查找第一个 tsconfig.json。路径、语法、包含范围任意一项出错,strict 就等于没写。
-
tsconfig.json必须放在 VSCode 打开的**最外层文件夹**下,不能只打开src/或packages/my-lib/子目录 - 运行
tsc --noEmit看是否报strict相关错误:如果命令行能报,但 VSCode 不标红,就是加载问题 - 检查
include或files字段是否覆盖了你正在编辑的.ts文件,例如漏掉"src/**/*" - 删掉
tsconfig.json里的注释(JSON 不支持)、尾随逗号、单引号、引号不匹配等语法错误——它们会让整个配置被静默跳过
启用 strict 后大量报错,但代码能跑?别关,先修
strict: true 是一揽子开关,等价于同时开启 noImplicitAny、strictNullChecks、strictFunctionTypes 等十多项检查。红波浪线不是 bug,是类型系统在告诉你“这里可能出 runtime 错误”。
-
Parameter 'x' implicitly has an 'any' type→ 给参数加类型标注,如(x: string) => void -
Property 'xxx' has no initializer(类属性)→ 用!: string断言,或在constructor中赋值 -
Object is possibly 'null' or 'undefined'→ 加?.或!,但优先考虑提前判空 - 别用
// @ts-nocheck全局屏蔽,那等于把 X 光机关了再拍片;局部临时绕过可用// @ts-ignore
改完 tsconfig.json 还不生效?重启 TS Server 是硬要求
VSCode 的 TypeScript 语言服务不会自动监听并重载配置变更,尤其对已打开的文件。
- 改完
tsconfig.json后,必须手动重启 TS Server:Ctrl+Shift+P→TypeScript: Restart TS server - 或者保存配置后,在任意打开的
.ts文件里敲个空格再删掉,触发一次重校验 - 如果用了
pnpm或bun,node_modules/typescript路径可能异常,可在.vscode/settings.json显式指定:"typescript.tsdk": "./node_modules/typescript/lib"
最容易被忽略的是:即使所有配置都对,只要 tsconfig.json 没被语言服务真正加载,strict 就只是个 JSON 字段——它不会参与任何类型推导或错误标记。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











