Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

223
Vistas
Definir una función que devuelve una función que devuelve void

no entiendo porque da error

 function foo(): () => string { return () => 123; }

Pero esto no

 function foo(): () => void { return () => 123; }

Y también esto no dará un error también

 function foo(): (a: number) => string { return () => '123'; }

Escribo explícitamente que la función devuelta debe aceptar un argumento, luego devuelvo una función que no acepta ninguno, pero TS no me da ningún error.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Asignar una función de tipo () => number a algo de tipo () => string claramente es un error de tipo. Sin embargo, para void como tipo de devolución, TypeScript es más indulgente. Del manual sobre la asignabilidad de funciones :

El tipo de retorno void para funciones puede producir un comportamiento inusual pero esperado.

La tipificación contextual con un tipo de retorno de void no obliga a las funciones a no devolver algo. Otra forma de decir esto es un tipo de función contextual con un tipo de retorno void ( type vf = () => void ), cuando se implementa, puede devolver cualquier otro valor, pero se ignorará.

[…]

Hay otro caso especial a tener en cuenta, cuando una definición de función literal tiene un tipo de retorno void , esa función no debe devolver nada.

También hay una entrada de preguntas frecuentes al respecto.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Mis investigaciones terminaron con el hecho de que es imposible hacer esto con TypesScript, desafortunadamente. Aquí están los enlaces que explican por qué se tomó esta decisión poco intuitiva.

  1. tipo vacío
  2. Asignabilidad de funciones
  3. Preguntas más frecuentes

La solución que más se acerca a la funcionalidad deseada es

  1. Escriba la función devuelta para devolver indefinido
 function foo(): () => undefined { ... }
  1. Establecer en la opción en tsconfig.json
 "compilerOptions": {"noImplicitReturns": false}
  1. Devolver explícitamente desde la función devuelta
 function foo(): () => undefined { return () => { return; } }

Se ve un poco feo pero ahora podemos definir una función que seguro no devolverá nada.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda