Website-Suche

typescript - Wie gibt man FormData einen Typ-Hinweis für die Verwendung in URLSearchParams?


Ich muss einen Ajax-Aufruf mit jQuery machen und ich muss die Daten als application/x-www-form-urlencoded übergeben. Das bedeutet, dass ich die URL-Suchabfrage als Parameter übergeben muss. Meine Anwendung erstellt die Daten jedoch mit dem FormData-Objekt. Ich habe online einen netten Trick gefunden, um es in eine Abfragezeichenkette wie folgt zu konvertieren:

let data = new FormData();
data.append('someField', "someValue");
let queryString = new URLSearchParams(data).toString();

Das funktioniert perfekt für das, was ich erreichen möchte. Allerdings schreibe ich den Code in TypeScript und es wird beanstandet, dass der an den URLSearchParams-Konstruktor übergebene Parameter vom falschen Typ ist.

Argument of type 'FormData' is not assignable to parameter of type 'string | string[][] | Record<string, string> | URLSearchParams | undefined'.
  Property 'sort' is missing in type 'FormData' but required in type 'URLSearchParams'.(2345)
input.tsx(6, 18): 'sort' is declared here.

Online auf dem Spielplatz ansehen.

Gibt es eine Möglichkeit, den Fehler in TypeScript zu vermeiden, da dies eine gültige JavaScript-Operation ist?

Antwort #1

Nun, vorausgesetzt, die Bibliothek ist falsch typisiert und dies ist eine gültige Konstruktion, können Sie TypeScript einfach mit einem cast zu any ignorieren:

let url = new URLSearchParams(data as any).toString();

Verwandte Artikel