只关 strict 模式需在 tsconfig.json 中设 "strict": false,保留基础类型校验;修改后必须执行 typescript: restart ts server 才生效,否则配置不加载。

直接关掉 typescript.validate.enable 是最快速屏蔽报错的方法,但它会一并禁用所有类型检查(包括基础语法错误),不是“关闭严格检查”,而是“关掉整个检查”。真要只关严格模式、保留基础校验,得靠 tsconfig.json 配置。
怎么只关 strict 模式,不关整个 TypeScript 校验
VSCode 的 TypeScript 语言服务默认读取项目根目录下的 tsconfig.json。只要改这里,就能精准控制哪些检查开、哪些关,且不影响语法高亮和自动补全。
-
"strict": false是核心开关,它会关掉包括noImplicitAny、strictNullChecks、strictFunctionTypes等在内的全部严格检查项 - 保留
"noEmit": true可避免误触发编译,只做编辑时校验 - 如果只想关某一项(比如只允许隐式
any),单独设"noImplicitAny": false更安全,不用动整个strict - 修改后必须重启 TypeScript 服务器:按
Ctrl + Shift + P→ 输入TypeScript: Restart TS Server→ 回车
示例 tsconfig.json 片段:
{"compilerOptions": {"strict": false,"noEmit": true,"skipLibCheck": true}}
为什么改了 settings.json 还是报错
常见原因是配置层级冲突:settings.json 中的 typescript.validate.enable 是全局或工作区级开关,而 tsconfig.json 是项目级配置。当两者共存时,VSCode 优先服从 tsconfig.json —— 即使你把 typescript.validate.enable 设为 false,只要项目里有 tsconfig.json 且 strict: true,报错仍会出现。
- 先确认当前打开的是文件夹(而非单个文件),否则
tsconfig.json不会被识别 - 在 VSCode 底部状态栏看有没有显示 “TypeScript” 和版本号,没显示说明语言服务没加载成功
- 检查
tsconfig.json是否在真正项目根目录下,而不是子目录里 - 用命令面板运行
TypeScript: Select TypeScript Version,选 “Use Workspace Version” 避免 VSCode 自带 TS 版本覆盖配置
临时屏蔽某一行或某个文件的报错
不想改全局或项目配置?可以用注释指令局部抑制:
- 单行忽略:在出错行上方加
// @ts-ignore(下一行报错就消失) - 指定错误码忽略:如
// @ts-expect-error TS2322,比@ts-ignore更精确 - 整个文件忽略:在文件顶部加
// @ts-nocheck,之后所有类型检查失效 - 注意:
@ts-nocheck和@ts-ignore只影响编辑器提示,不影响tsc命令行编译
最易被忽略的一点:VSCode 的 TypeScript 服务不会实时监听 tsconfig.json 变更。改完不重启 TS Server,等于白改;而很多人只记得 reload window,却漏掉这一步。











