Búsqueda de sitios web

typescript - ¿Cómo indicar el tipo de FormData para usarlo en URLSearchParams?


Necesito hacer una llamada ajax usando jQuery y necesito pasar los datos como application/x-www-form-urlencoded. Esto significa que necesito pasar la consulta de búsqueda de URL como un parámetro. Sin embargo, mi aplicación construye los datos usando el objeto FormData. He encontrado en línea un buen truco para convertirlo a una cadena de consulta así:

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

Esto funciona perfectamente para lo que necesito lograr. Sin embargo, estoy escribiendo el código en TypeScript y se queja de que el parámetro pasado al constructor URLSearchParams es de tipo incorrecto.

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.

Ver en línea en el área de juegos.

¿Hay alguna manera de evitar el error en TypeScript ya que esta es una operación válida de JavaScript?

Respuesta #1

Bueno, suponiendo que la biblioteca esté tipada incorrectamente y esta sea una construcción válida, puedes simplemente decirle a TypeScript que se vaya al diablo con un casteo a any:

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

Artículos relacionados