javascript - Hur fixar jag säkert ESLint `no-fallthrough`-felet för avsiktliga switch-case-utlämnanden av break/return/throw?
För min ansökan vill jag använda ett switch-case-mönster. Vissa fall kräver ELLER-logik, vilket betyder att det finns avsiktliga fallthroughs i koden för korthet. Men ESLint gillar inte det och ger fel. Jag försökte lägga till kommentarer enligt dokumentationen, men det hjälpte inte. För att återskapa, försök detta:
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 med standardinställningar kommer att ge:
Error: Expected a 'break' statement before 'case'. no-fallthrough
Hur informerar jag ESLint att förvänta sig ett undantag specifikt i detta kodblock?
Jag förstår att det finns sätt att designa detta annorlunda, t.ex. med if-satser och tidigt retur-mönster, vilket är mitt vanliga tillvägagångssätt. Men jag vill att den här delen av systemet ska vara läsbar för icke-utvecklare. Jag förväntar mig att TypeScript och Jest håller saker anständiga.
Svar #1
Jag slutade med att använda @dream-bolds svar men tillämpade det i koden istället för över hela projektet:
/* 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 */
Svar #2
Lägg till detta i din eslint-konfigurationsfil,
...
'rules': {'no-fallthrough': ['error', {'commentPattern': 'break[\\s\\w]*omitted'}]
...
och i din kod:
switch(foo) {
case 1:
doSomething();
// break omitted
case 2:
doSomething();
}
Du kan läsa mer detaljer här.
