如何禁用eslint的多个规则nextline

229
我有这段代码:
const subTotal = orderInfo.details.reduce((acc, cv) => acc += Number(cv.price) * Number(cv.quantity), 0);

我想在这一行禁用两个ESLint检查类型,即no-return-assignno-param-reassign
我尝试了以下方法:
/* eslint-disable-next-line no-return-assign eslint-disable-next-line no-param-reassign */
const subTotal = orderInfo.details.reduce((acc, cv) => acc += Number(cv.price) * Number(cv.quantity), 0);


但是我的编辑器仍然显示eslint(no-return-assign)的lint错误。

3
为什么不直接写成 => acc + ... 呢?这样你就不会违反规则了。没有必要进行赋值操作。 - jonrsharpe
2
是的,这看起来不错。谢谢。无论如何,如果您知道的话,请告诉我,如果用户想要禁用多个规则的eslint规则以进行下一行操作,该怎么办。在这种情况下,有没有修复no-return-assign的方法。 - shubham choudhary
2个回答

393

如果您想禁用多个ESLint错误,可以按照以下方式操作(请注意逗号):

  • 对于下一行:
// eslint-disable-next-line no-return-assign, no-param-reassign
( your code... )
  • 对于这一行
( your code... ) // eslint-disable-line no-return-assign, no-param-reassign
  • 或者对于整个代码块,可以采用(请注意,这仅适用于多行注释语法)
/* eslint-disable no-return-assign, no-param-reassign */
( your code... )
/* eslint-enable no-return-assign, no-param-reassign */

请查看 ESLint 文档中的 配置规则 部分。

(如果您不能一直遵循某些规则,那么在您的 .eslintrc 文件中禁用这些错误可能是更好的选择.)


8
奇怪的是,eslint-disable(不带next-line)只在使用/* ... */类型的注释时有效,而在使用//类型的注释时无效。 - Krisztián Balla
@JennyO'Reilly,这确实是他们一方面的奇怪决定。我会在答案中具体说明。 - Yannick K
3
对于那些将 eslint-disable-next-line 转换为 eslint-disable(用于多行)的人,请记住两件事。1. 使用 /* */ 而不是 // 2. 它是 eslint-disable 而不是 eslint-disable-next-line。再次强调,因为我也犯了同样的错误,由于第二点不得不搜索更多的内容。也许对未来的某个人有帮助。 - paradocslover
使用 eslint-disable 开始排除块,使用 eslint-enable 结束它。如果您将 eslint-disable 放在块的末尾,很容易忽略它,因为它将有效地跳过文件的其余部分! - davidjmcclelland

18

你应该使用逗号。

/* eslint-disable-next-line no-return-assign, no-param-reassign */
const subTotal = orderInfo.details.reduce((acc, cv) => acc += Number(cv.price) * Number(cv.quantity), 0);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接