/ / Jak dodać funkcję asynchroniczną do pliku typu def? - maszynopis

Jak mogę dodać funkcję asynchroniczną do pliku typu def? - maszynopis

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 № 1

Wszystko 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);
}