vue3的setup,defineEmits报错'event' is defined but never used.
eslint直接用的airbnb
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
这个规则关闭
有什么办法解决吗
回答:
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 规则文档。
以上是 vue3的setup,defineEmits报错'event' is defined but never used. 的全部内容, 来源链接: utcz.com/p/936704.html