精准关闭typescript严格模式需在tsconfig.json中设"strict": false并重启ts服务器,而非改settings.json;关eslint需设eslint.enable为false;vue模板校验可关vetur.validation.template;局部忽略用@ts-ignore等注释。

VSCode 里“烦人的严格模式检查”不是单一开关,而是多个独立系统叠加的结果:TypeScript 语言服务、ESLint、Vetur(Vue)、JavaScript 隐式配置等各自在干活。直接关掉 typescript.validate.enable 或 eslint.enable 最快,但会连带干掉有用的提示;真想精准控制,得按检查来源分别处理。
怎么关 TypeScript 的 strict 模式(只松绑,不废掉)
这是最常被误操作的部分:改了 settings.json 却没生效,因为 VSCode 的 TypeScript 服务优先读取项目根目录下的 tsconfig.json,而不是编辑器设置。
-
"strict": false是核心开关,它会关掉noImplicitAny、strictNullChecks、strictFunctionTypes等一整套规则,但保留基础语法高亮和补全 - 必须同时设
"noEmit": true,避免误触发编译,只做编辑时校验 - 改完后必须手动执行
TypeScript: Restart TS Server(Ctrl+Shift+P 输入),否则配置不会加载 - 确认当前打开的是文件夹(不是单个 .ts 文件),且
tsconfig.json在项目根目录;底部状态栏要显示 “TypeScript x.x.x” 才说明服务已加载
怎么关 ESLint 的严格报错(比如缩进、分号、引号)
ESLint 报错和 TypeScript 不是一回事,它由 .eslintrc.js 或 .eslintrc.json 控制,VSCode 只是把结果展示出来。关它的关键不是删插件,而是切断 VSCode 和 ESLint 的联动。
- 在 VSCode 设置中搜
eslint.enable,把它设为false—— 这是最直接的禁用方式 - 如果只想临时跳过某次保存自动修复,关掉
editor.codeActionsOnSave下的"source.fixAll.eslint" - 注意:
eslint.enable: false不影响命令行运行npx eslint,只停掉编辑器里的实时提示 - 若项目里有
package.json中启用了eslintConfig,或用了 Prettier + ESLint 组合,单关 VSCode 设置可能不够,需同步检查工作区.vscode/settings.json是否覆盖了项目级配置
怎么关 Vue / JSX 模板里的“过度校验”(如 Vetur 的 template 验证)
Vue 项目里常被卡住的是 vetur.validation.template,它会对 <template></template> 块做类似 HTML 的结构校验,但对 Composition API 或动态属性支持不好,容易误报。
- 在 VSCode 设置中搜
vetur.validation.template,取消勾选即可关闭模板层校验 - 如果你用的是 Volar(Vue 3 官方推荐),那这个选项根本不存在,不用管;确认底部状态栏显示的是 “Volar”,不是 “Vetur”
- 顺带可关掉
vetur.validation.style和vetur.validation.script,但关 script 层会丢失 TypeScript 提示,不建议 - 若用
defineProps+ 类型推导,确保compilerOptions.experimentalDecorators或skipLibCheck已启用,否则 Volar 也可能报泛型相关红波浪线
临时忽略某一行或某个文件(救急用)
不想动配置?局部抑制最快,但只作用于编辑器提示,不影响 tsc 或 eslint --fix 命令行执行。
- 单行忽略:在出错行上方加
// @ts-ignore(粗暴但有效) - 指定错误码忽略:比如
// @ts-expect-error TS2322,比@ts-ignore更安全,只压这一条 - 整个文件忽略:在文件顶部加
// @ts-nocheck,之后所有类型检查失效 - JavaScript 文件想关隐式类型检查?在
jsconfig.json里设"checkJs": false,或在 JS 文件顶部加// @ts-check的反向注释(不过 VSCode 默认不读这个)
最容易被忽略的一点:VSCode 的 TypeScript 服务不会监听 tsconfig.json 文件变更,改完不重启 TS Server 就等于没改;而 ESLint 配置改完通常要重开文件或刷新窗口才能生效。别省这一步,否则你会以为配置失效,其实只是没 reload。











