Przejdź do treści
webtype.orgwebtype.orgtsconfig

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    tsconfig

    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": false
    export function pick(n: 1 | 2): string {
      switch (n) {
        case 1:
          const label = 'one'
        case 2:
          return 'two'
      }
    }

    Kompiluje się czysto

    Z włączoną

    "noFallthroughCasesInSwitch": true
    export 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