Tengo una función que acepta otra función como argumento y devuelve una función que tiene la misma firma de tipo de entrada, pero void
en lugar del tipo de salida que tenía la función interna. El código real hace otras cosas, pero aquí está la versión simplificada. Parece que no puedo obtener los tipos correctos. Esto es lo que tengo hasta ahora (soy consciente de que está mal):
export function foo<Type>(func : (_ : Type) => any) { return function bar(...args : Type) : void { func.apply(null, args) } }
La primera línea realmente no captura lo que quiero: toda la lista de argumentos de func
debe ser Type
, no solo el primer argumento. Sin embargo, parece que no puedo hacerlo. (Tenga en cuenta que Type[]
no captura el uso previsto, ya que no todos los argumentos deben ser del mismo tipo). ¿Es esto posible dados los genéricos que ofrece Typescript?