Tengo una interfaz y una clase que implementa los métodos, por ahora no encontré una respuesta a mi problema. Tengo una función definida myAsyncFunction() en la interfaz y quiero que sea asíncrona :
export interface State { state: Class; myAsyncFunction(): any; }A TypeScript no le importa si una función usa la palabra clave async . Solo le importa que sea una función, qué argumentos toma y cuál es el valor de retorno.
El único significado de la palabra clave async en ese contexto es que la función devolverá una promesa... que será igualada por any .
Para la persona que llama, una función asíncrona es solo una función que devuelve una promesa:
export interface State { state: string; myAsyncFunction(): Promise<any>; } const state : State = { state: 'foo', myAsyncFunction: async () => 'bar' };La función es asíncrona cuando devuelve una Promesa. Aquí hay un ejemplo de cómo definir la función asíncrona en la interfaz:
interface Foo { bar: () => Promise<void> } En lugar de void , puede usar cualquier tipo de devolución que desee y, por supuesto, puede usar cualquier parámetro que desee, por ejemplo:
interface Foo { bar: (test: string) => Promise<boolean> }