Próbuję dodać definicję funkcji asynchronicznej do async-busboy;
Stworzyłem plik "async-busboy.d.ts"
declare module "async-busboy" {
export default async function asyncBusby
(subString: any): Promise<any>;
}
Ale to daje mi błąd: "błąd TS1040:" modyfikator "asynchroniczny" nie może być użyty w kontekście otoczenia. "
Jak napisać defekty funkcji asynchronicznej?
Dzięki
EDYTOWAĆ Dzięki @Titian Cernicova-Dragomir i @Aaron za odpowiedź. Ale kiedy to nazywam, dostaję błąd
const dddd = await asyncBusboy(22);
[ts] "await" expression is only allowed within an async function.
Jakieś sugestie?
Odpowiedzi:
1 dla odpowiedzi № 1Wszystko czego potrzebujesz to:
declare module "async-busboy" {
export default function asyncBusby
(subString: any): Promise<any>;
}
Fakt, że zwraca a Promise
to sprawia, że jest asynchroniczny. Od konsumentów oczekuje się await
temu any
teraz wartość. The async
modyfikator jest używany do zwiększenia wdrażania funkcji ciała (co zwraca jest staje się zapakowane w obietnica,) które don "t mieć w typu def, który jest dlaczego async
ISN "dozwolone w def. typu t
0 dla odpowiedzi nr 2
Istnieje potrzeba dla async
modyfikator w deklaracji. The async
modyfikator kieruje kompilator emitować kod umożliwiający korzystanie z await
. Z punktu widzenia konsumenta ważne jest, że zwraca ona Promise
nie jak async jest zaimplementowana w treści funkcji.Można rozważyć async
Szczegóły implementacji funkcji.
Twój problem jest wywołanie witryny, musisz oznaczyć funkcja, w której możesz zadzwonić asyncBusby
jako async
:
async function foo (){
const dddd = await asyncBusby(22);
console.log(dddd);
}