Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    TS2355

    Debe devolver un valor

    A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.

    Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.

    La firma promete que algo vuelve y el cuerpo nunca lo entrega.

    Reproducción

    function f(): number {
    }

    La compilación afirma que esto emite exactamente este código.

    Por qué lo dice el compilador

    Un tipo de retorno es una promesa a cada llamante, y este error es el compilador exigiéndotela antes de que alguien dependa de ella. El mensaje nombra los tres tipos a los que se permite significar «no vuelve nada», lo cual recuerda además que `void` y `undefined` no son lo mismo: `void` dice que quien llama debe ignorar el resultado, `undefined` dice que el resultado es un valor real que resulta ser undefined.

    Arreglos

    1. 01
      function f(): number {
        return 1
      }

      Cumple la promesa.

    2. 02
      function f(): void {
      }

      O deja de hacerla. `void` es el tipo de retorno correcto para una función que existe por sus efectos, y decirlo es mejor que devolver algo que nadie quiere.

    Conclusión

    Este error también salta cuando solo *algunas* rutas devuelven. Si te sorprende, busca la rama que se cae por el final.

    Errores