对于我的应用程序,我想使用 switch case 模式。有些情况需要 OR 逻辑,这意味着为了简洁起见,代码中故意存在缺陷。然而,ESLint 不喜欢这样并且会抛出错误。我尝试按照文档添加评论,但这没有帮助。要重现,请尝试以下操作:
switch(num) {
case 1:
/*
I also have comments in my code that explain functionality to non-developers.
*/
case 2:
return "if one or two";
case 3:
return "if three only";
}
默认设置的 ESLint 将抛出:
Error: Expected a 'break' statement before 'case'. no-fallthrough
我如何通知 ESLint 在这段代码中特别期待异常?
我知道有多种方法可以进行不同的设计,即使用 if 语句和提前返回模式,这是我通常的方法。但是,我希望系统的这一部分对于非开发人员来说是可读的。我希望 TypeScript 和 Jest 能够让事情变得体面。
我最终采用了@dream-bold的答案,但将其应用到代码中而不是整个项目中:
/* eslint-disable no-fallthrough */
switch (num) {
case 1:
// falls through
case 2:
return "if one or two";
case 3:
return "if three only";
}
/* eslint-enable no-fallthrough */
将其添加到您的 eslint 配置文件中,
...
'rules': {'no-fallthrough': ['error', {'commentPattern': 'break[\\s\\w]*omitted'}]
...
并在您的代码中:
switch(foo) {
case 1:
doSomething();
// break omitted
case 2:
doSomething();
}
您可以在此处阅读更多详细信息。
以下内容应该适合您:
switch (num) {
case 1:
/*
I also have comments in my code that explain functionality to non-developers.
*/
// eslint-disable-next-line no-fallthrough
case 2:
return "if one or two";
case 3:
return "if three only";
}
也就是说,在失败之前提供
eslint-disable-next-line
规则,并事先提供任何解释性评论
另外,请注意this也可以工作:
switch (num) {
case 1:
/*
I also have comments in my code that explain functionality to non-developers.
*/
// falls through
case 2:
return "if one or two";
case 3:
return "if three only";
}
因为任何与
/falls?\s?through/i
正则表达式匹配的注释都会被视为故意失败(请参阅
https://eslint.org/docs/latest/rules/no-fallthrough)