/ / ¿Cómo puedo agregar una función asíncrona a un tipo de archivo def? - mecanografía

¿Cómo puedo agregar una función asíncrona a un archivo def de tipo? - mecanografía

Estoy tratando de agregar una definición de función asíncrona para async-busboy;

He creado un archivo "async-busboy.d.ts"

declare module "async-busboy" {
export default async function asyncBusby
(subString: any): Promise<any>;
}

Pero esto me da el error: "error TS1040: el modificador" asíncrono "no se puede utilizar en un contexto ambiental".

¿Cómo escribo las funciones asíncronas?
Gracias

EDITAR Gracias, @Titian Cernicova-Dragomir y @Aaron por su respuesta. Pero cuando lo llamo me sale un error.

const dddd = await asyncBusboy(22);
[ts] "await" expression is only allowed within an async function.

¿Alguna sugerencia?

Respuestas

1 para la respuesta № 1

Todo lo que necesitas es esto:

declare module "async-busboy" {
export default function asyncBusby
(subString: any): Promise<any>;
}

El hecho de que devuelva un Promise Es lo que lo hace asíncrono. Se espera que los consumidores await el any valor ahora los async el modificador se usa para aumentar la implementación del cuerpo de la función (lo que devuelve se envuelve en una promesa), que no tiene en una definición de tipo, por lo que async no está permitido en la definición de tipo.


0 para la respuesta № 2

No hay necesidad de async Modificador en una declaración. los async El modificador dirige al compilador a emitir código que permite el uso de await. Desde el punto de vista del consumidor, la parte importante es que devuelve un Promise No cómo se implementa el async en el cuerpo de la función. Puedes considerar async Un detalle de implementación de la función.

Su problema es un problema del sitio de llamadas, debe marcar la función en la que llama asyncBusby como siendo async:

async function foo (){
const dddd = await asyncBusby(22);
console.log(dddd);
}