Я намагаюся додати визначення функції 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);
}