Saltar al contenido
webtype.orgwebtype.orgtsconfig

    ↑↓ mover · ⏎ abrir · esc cerrar

    tsconfig

    noFallthroughCasesInSwitch

    Un break olvidado, detectado

    Marca un `case` que hace algo y luego cae en el siguiente, permitiendo aún la caída vacía deliberada.

    Desde
    TypeScript 1.8
    strict
    Fuera de strict
    En tu tsconfig
    "noFallthroughCasesInSwitch": true

    El mismo fragmento las dos veces. Solo cambió la opción.

    Con ella apagada

    "noFallthroughCasesInSwitch": false
    export function pick(n: 1 | 2): string {
      switch (n) {
        case 1:
          const label = 'one'
        case 2:
          return 'two'
      }
    }

    Compila limpio

    Con ella encendida

    "noFallthroughCasesInSwitch": true
    export function pick(n: 1 | 2): string {
      switch (n) {
        case 1:
          const label = 'one'
        case 2:
          return 'two'
      }
    }

    Emite TS7029

    Por qué al compilador le importa

    Los casos vacíos apilados son un idioma real y la comprobación lo sabe: solo se informa de una cláusula con sentencias dentro, así que `case 1: case 2: return x` sigue siendo legal. Esa distinción es lo que la hace usable: una comprobación que prohibiera toda caída se desactivaría en una semana, y una comprobación que nadie ejecuta no atrapa nada.

    Conclusión

    La caída vacía sigue siendo legal, y es la única razón por la que esta bandera sobrevive en un proyecto real.

    Adónde ir después

    22 opciones