升级Vue3/Quasar v2后出现@typescript-eslint/no-unsafe-member-access警告如何解决
可能遗漏的配置点整理
- ESLint 未配置类型检查所需的项目路径
@typescript-eslint/no-unsafe-member-access属于需要类型信息才能正常工作的规则,必须在ESLint配置的parserOptions中添加project: './tsconfig.json'字段,指定ESLint读取项目的TS配置文件做类型推导。VSCode中的类型展示由Volar插件独立提供,和ESLint的类型检查链路不共享,所以会出现VSCode类型正常但ESLint报错的情况。 - ESLint parser 配置顺序错误
处理Vue单文件组件时,ESLint顶层parser字段必须指定为vue-eslint-parser,@typescript-eslint/parser需要放在parserOptions.parser字段下,顺序写反会导致TS类型无法在Vue文件中被正确推导,示例正确配置如下:
// .eslintrc.js 核心配置片段 module.exports = { parser: 'vue-eslint-parser', parserOptions: { parser: '@typescript-eslint/parser', project: './tsconfig.json', extraFileExtensions: ['.vue'], sourceType: 'module' } }
- parser 未配置.vue 扩展名支持
需要在parserOptions中添加extraFileExtensions: ['.vue'],让@typescript-eslint/parser识别.vue文件的导入和类型。 - 依赖包版本不兼容
检查@typescript-eslint/eslint-plugin、@typescript-eslint/parser、vue-eslint-parser、@vue/eslint-config-typescript四个依赖的版本,是否适配当前使用的Vue3、TypeScript版本,旧版本依赖无法正确识别defineComponent的props自动类型推导逻辑。 - Quasar 专属类型未正确注册
Quasar v2项目需要在tsconfig.json的compilerOptions.types数组中添加对应打包工具的类型声明,如使用Vite则加@quasar/app-vite,使用Webpack则加@quasar/app-webpack,避免全局Vue类型声明缺失导致ESLint推导异常。 - tsconfig 未包含目标文件
检查tsconfig.json的include数组是否包含了报错的.vue文件所在目录,ESLint的类型检查会严格遵循tsconfig的包含规则,不在范围内的文件无法拿到正确类型。
内容的提问来源于stack exchange,提问作者DarkLite1
相关产品推荐
相关产品推荐

