Ce face noFallthroughCasesInSwitch
Într-un switch, dacă un case nu se termină cu break, return sau throw, execuția continuă în case-ul următor („fallthrough”). De cele mai multe ori este un break uitat. Cu noFallthroughCasesInSwitch, TypeScript dă eroarea TS7029.
case-urile goale, puse unul sub altul ca să împartă același cod (case "Brașov": case "Sibiu":), sunt permise.
Implicit este false și nu face parte din strict.
Parametri
| Parametru | Descriere |
|---|---|
true |
Un case cu cod care trece în următorul dă eroare. |
false |
Valoarea implicită. |
Exemple
Exemplul 1: break uitat
Pentru Iași, costul ar deveni 15 + 20 = 35, pentru că execuția continuă în case "Cluj". Brașov și Sibiu împart corect același cod.
// tsconfig.json
{
"compilerOptions": {
"noFallthroughCasesInSwitch": true
}
}
// index.ts
function transport(oras: string) {
let cost = 0;
switch (oras) {
case "Iași":
cost = 15;
case "Cluj":
cost += 20;
break;
case "Brașov":
case "Sibiu":
cost = 25;
break;
}
return cost;
}
console.log(transport("Iași"));
Rezultat (tsc 5.9)
$ npx tsc --noEmit
index.ts(4,5): error TS7029: Fallthrough case in switch.
Exemplul 2: switch corectat
Fiecare case cu cod se termină cu return.
function transport(oras: string): number {
switch (oras) {
case "Iași":
return 15;
case "Cluj":
return 20;
case "Brașov":
case "Sibiu":
return 25;
default:
return 30;
}
}
for (const oras of ["Iași", "Sibiu", "Constanța"]) {
console.log(`${oras}: ${transport(oras)} lei`);
}
Rezultat
Iași: 15 lei
Sibiu: 25 lei
Constanța: 30 lei
Greșeli frecvente
- Să crezi că opțiunea interzice
case-urile grupate. Doarcase-urile care au cod și nu se termină sunt raportate.
Comenzi înrudite
noImplicitReturns: Dă eroare când o funcție care întoarce o valoare pe unele ramuri se poate termina fără return pe altele.allowUnreachableCode: Controlează ce face tsc cu codul imposibil de atins și cu etichetele nefolosite: eroare, avertisment în editor sau nimic.