Saltar al contenido
webtype.orgwebtype.orgtsconfig

    ↑↓ mover · ⏎ abrir · esc cerrar

    tsconfig

    noImplicitReturns

    Todos los caminos o ninguno

    Una función donde unas ramas devuelven un valor y otras se caen por el final es casi siempre un caso que falta.

    Desde
    TypeScript 2.0
    strict
    Fuera de strict
    En tu tsconfig
    "noImplicitReturns": true

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

    Con ella apagada

    "noImplicitReturns": false
    export function grade(n: number) {
      if (n > 50) {
        return 'pass'
      }
    }

    Compila limpio

    Con ella encendida

    "noImplicitReturns": true
    export function grade(n: number) {
      if (n > 50) {
        return 'pass'
      }
    }

    Emite TS7030

    Por qué al compilador le importa

    Sin anotación el compilador infiere `string | undefined` y todo lo que viene después hereda el agujero, así que el error se informa —si es que se informa— lejos de donde se cometió. Esta bandera lo informa aquí. Trata de la forma de la función y no del tipo del resultado, y por eso atrapa tanto el caso que un tipo de retorno explícito también atraparía como aquel en que nunca escribiste uno.

    Conclusión

    Un switch exhaustivo que retorna en cada caso la satisface sin un return final.

    Adónde ir después

    22 opciones