/ / Як я можу додати функцію async до файлу типу def? - машинопис

Як я можу додати функцію async до файлу def file? - машинопис

Я намагаюся додати визначення функції async для async-busboy;

Я створив файл "async-busboy.d.ts"

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

Але це дає мені помилку: "помилка TS1040: модифікатор" async "не може використовуватися в контексті навколишнього середовища."

Як написати асинхронну функцію defs?
Дякую

EDIT Дякуємо @Titian Cernicova-Dragomir та @Aaron за відповідь. Але коли я називаю це, я отримую помилку

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

Будь-які пропозиції?

Відповіді:

1 для відповіді № 1

Все, що вам потрібно, це:

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

Той факт, що він повертає a Promise це те, що робить його асинхронним. Очікується, що споживачі await в any значення. The async Модифікатор використовується для збільшення реалізації тіла функції (те, що він повертає, стає загорнутим у обіцянку), який у вас немає у тип-дефісі, тому async не допускається в def-type.


0 для відповіді № 2

Немає потреби в async модифікатора в декларації. The async модифікатор направляє компілятору випромінювати код, що дозволяє використовувати await. З точки зору споживача важлива частина полягає в тому, що вона повертає a Promise не як async реалізується в тілі функції. Можна розглянути async детальну реалізацію функції.

Ваша проблема - це проблема виклику сайту, потрібно позначити функцію, в якій ви телефонуєте asyncBusby як бути async:

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