noFallthroughCasesInSwitch
Zapomniany break, złapany
Sygnalizuje `case`, który coś robi, a potem wpada w następny — nadal pozwalając na celowe puste przejście.
- Od
- TypeScript 1.8
- strict
- Poza strict
- W twoim tsconfigu
"noFallthroughCasesInSwitch": true
Ten sam fragment za każdym razem. Zmieniła się tylko opcja.
Z wyłączoną
"noFallthroughCasesInSwitch": falseexport function pick(n: 1 | 2): string { switch (n) { case 1: const label = 'one' case 2: return 'two' } }
Kompiluje się czysto
Z włączoną
"noFallthroughCasesInSwitch": trueexport function pick(n: 1 | 2): string { switch (n) { case 1: const label = 'one' case 2: return 'two' } }
Zgłasza TS7029
Dlaczego kompilator się tym przejmuje
Piętrzone puste przypadki to prawdziwy idiom i kontrola o tym wie: zgłaszana jest tylko klauzula, w której są instrukcje, więc `case 1: case 2: return x` pozostaje legalne. To rozróżnienie czyni flagę używalną — kontrola zakazująca wszelkiego przejścia zostałaby wyłączona w tydzień, a kontrola, której nikt nie uruchamia, nie łapie niczego.
Wniosek
Puste przejście zostaje legalne — i tylko dlatego ta flaga przeżywa w prawdziwej bazie kodu.
Gdzie iść dalej
Opcji: 22

