Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

216
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!