Intenté definir un tipo de función asíncrona, pero fallé en la compilación, ver a continuación:
interface SearchFn {
async (subString: string): string;
}
class A {
private Fn: SearchFn
public async do():Promise<string> {
await this.Fn("fds") // complain here: cannot invoke an expression whose type lacks a call signature
return ''
}
}
¿Alguien puede ayudarme a resolver esto?
typescript
Ron
fuente
fuente

Fn.Respuestas:
Encontré esto buscando cómo declarar un "typedef" para una función de flecha asíncrona.
Funciona si simplemente declara el tipo de retorno de la función como una Promesa:
interface SearchFn { (subString: string): Promise<boolean>; }o como una declaración de tipo:
type SearchFn = (subString: string) => Promise<boolean>;TS Linter de Microsoft recomendará esta segunda sintaxis.
fuente
): Promise<undefined>me está fallando. Solo necesito una función asincrónica para poder usarlaawaitdentro ...La
asyncpalabra clave se usa para indicar al compilador / tiempo de ejecución que la función en cuestión usaráawaitinternamente (para que pueda poner el andamiaje requerido para habilitarla ).Esto significa que
asyncsolo tiene significado para la implementación de la función, no su interfaz . Por lo tanto, tenerasyncun método de interfaz no es útil, quiere decir que la función devuelve un ciertoPromise(en su casoPromise<string>) pero no quiere exigir que el implementador de la interfaz lo implemente de cierta manera (usandoawait).Entonces, como otros dijeron antes que yo:
interface SearchFn { (subString: string): Promise<string>; }Entonces, quien decida implementar esta función puede optar por utilizar una metodología
asyncantiguaPromise.theno tal vez incluso alguna nueva que surgirá en el futuro.fuente
Pase el tipo de objeto devuelto al genérico Promise.
type SearchFn = (subString: string): Promise<string>;Alternativamente, puede declarar un
AsyncFunctiontipo genérico.type AsyncFunction <A,O> = (...args:A) => Promise<O> type SearchFn = AsyncFunction<[string], string>AsyncFunction es un tipo genérico que recibe dos variables de tipo: el tipo de entrada (A) y el tipo de salida.
fuente