VS Code提示tsc与eslint都不报的TypeScript错误该如何解决?
解决方案
对齐TypeScript版本(核心问题)
你项目package.json中指定的TS版本为3.9.7,但VS Code默认使用内置的高版本TypeScript进行类型检查。高版本TS(4.4及以上)默认开启了useUnknownInCatchVariables规则,要求catch块的参数必须按unknown类型处理,这就是你那段catch代码报错的原因,而本地tsc用的是3.9版本,没有该规则所以不会报错。
操作方法:
打开项目中任意.ts文件,点击编辑器右下角的{}TypeScript 版本号按钮,在弹出的选项中选择「使用工作区版本」,VS Code会自动读取./firebase/functions/node_modules/typescript下的3.9版本进行校验,和本地tsc行为完全对齐。修正TS配置路径
你项目的根tsconfig存放在./firebase/functions目录下,VS Code默认会从项目根目录查找tsconfig,找不到就会使用默认校验规则,导致和手动在functions目录执行tsc的结果不一致。
在工作区设置中添加以下配置:
{ "typescript.tsdk": "./firebase/functions/node_modules/typescript/lib", "typescript.workingDirectories": ["./firebase/functions"] }
- 对齐ESLint行为
你已经配置了eslint.workingDirectories指向functions目录,补充一条配置关闭高版本ESLint才支持的Flat Config检测,避免和你本地7.x版本的ESLint行为不一致:
{ "eslint.useFlatConfig": false }
- 重启生效
按Ctrl+Shift+P(Mac系统为Cmd+Shift+P)呼出命令面板,执行「TypeScript: 重启TS服务器」,或直接重启VS Code即可。
配置完成后VS Code的TS、ESLint校验结果会和本地命令行执行的tsc、eslint完全一致,不会出现多余报错。
内容的提问来源于stack exchange,提问作者Daniel Kaplan
相关产品推荐
相关产品推荐

