vue3的setup,defineEmits报错'event' is defined but never used.

eslint直接用的airbnb
image.png
image.png

const emit = defineEmits<{
  (event: 'update', collapse: boolean): void
}>()
const handleCollapse = () => {
  emit('update', !props.collapse)
}

不想每个defineEmits都加

// eslint-disable-next-line no-unused-vars

更不想直接把no-unused-vars这个规则关闭

有什么办法解决吗

阅读 6.8k
1 个回答

2022/1/5 更新

今天整理 vue3 项目模板的时候,发现确实存在此问题,之前的回答不能很好解决,补充下。

配置:

'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': ['error', { vars: 'all', args: 'after-used', ignoreRestSiblings: true }],

由于项目中使用了 @typescript-eslint/eslint-plugin ,而 airbnb 官方没 typescript 依赖包,故关了 no-unused-vars 规则 , @typescript-eslint/no-unused-vars 是基于 no-unused-vars 进行扩展,原回答中的选项仍可用。

参考地址。

原回答
以下为 airbnb-base 的 no-unused-vars 相关配置

'no-unused-vars': ['error', { vars: 'all', args: 'after-used', ignoreRestSiblings: true }]

如果不想直接禁用此规则的话,可尝试以下的配置:

一、 不检测参数,保留其它不变

'no-unused-vars': ['error', { vars: 'all', args: 'none', ignoreRestSiblings: true }]

这样配置的话,所有函数参数相关的检测就被禁止了,无用变量的检测还能继续运行。

二、排除特定字符开头的参数

'no-unused-vars': ['error', { vars: 'all', args: 'after-used', ignoreRestSiblings: true, argsIgnorePattern: '^_' }]

此配置影响较小,只要定义参数时,将无用的参数加上下划线即可:

const emit = defineEmits<{
  (_event: 'update', _collapse: boolean): void
}>()
const handleCollapse = () => {
  emit('update', !props.collapse)
}

具体可查看 ESLint 规则文档

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏