Estoy dando el tipo genérico al parámetro de la función, cuando llamo a la función me da un error "Esta expresión no se puede llamar. El tipo desconocido no tiene firma de llamada"
function a() { return 'abc' } function fun<T>(x: T, y: string) { return x() + y; } fun(a, "str")Como está escrito en esta respuesta https://stackoverflow.com/a/62233415/3262937 , debe usar T extends Function para que el compilador de TypeScript sepa que su parámetro genérico es una función.
Vea este patio de recreo: https://www.typescriptlang.org/play?#code/GYVwdgxgLglg9mABAQwBQEpEG9ECcCmUIuSA5MgEYSmIC+AUPaJLAoswDwAqi+AHlHxgAJgGdEAMXDR4YAHyo+ALkRcANIgCeK0VFwwwAc0xZ6icxfMEiJRHwyIA1FoDcZiwybUyD9QwybUyD9QwybUyD9Q
Ahí está la solución.
function a() { return 'abc' } function fun<T>(x: T, y: string) { return x + y; } fun(a(), "str");