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": falseexport function grade(n: number) { if (n > 50) { return 'pass' } }
Compila limpio
Con ella encendida
"noImplicitReturns": trueexport 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

