What is @types/qs?
The @types/qs package provides TypeScript type definitions for the qs library, which is used for parsing and stringifying query strings. It allows developers to work with query strings in a type-safe manner, ensuring that the code adheres to the expected structure and types of the qs library.
What are @types/qs's main functionalities?
Parsing query strings
This feature allows you to parse query strings into an object, making it easier to access the query parameters.
import * as qs from 'qs';
const query = '?a=c&b=d';
const parsed = qs.parse(query);
console.log(parsed); // { a: 'c', b: 'd' }
Stringifying objects
This feature enables you to convert an object into a query string, useful for creating URLs with query parameters.
import * as qs from 'qs';
const obj = { a: 'c', b: 'd' };
const stringified = qs.stringify(obj);
console.log(stringified); // 'a=c&b=d'
Other packages similar to @types/qs
query-string
The query-string package offers parsing and stringifying of query strings. It provides a more modern API and supports newer JavaScript features compared to qs, but lacks some of the deep object serialization capabilities of qs.
url-search-params
This is a built-in Web API in modern browsers for working with query strings, similar to qs. It doesn't require installation but is not as feature-rich as qs, especially in terms of parsing options and array handling.
Installation
npm install --save @types/qs
Summary
This package contains type definitions for qs (https://github.com/ljharb/qs).
Details
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/qs.
export = QueryString;
export as namespace qs;
declare namespace QueryString {
type defaultEncoder = (str: any, defaultEncoder?: any, charset?: string) => string;
type defaultDecoder = (str: string, decoder?: any, charset?: string) => string;
interface IStringifyOptions {
delimiter?: string | undefined;
strictNullHandling?: boolean | undefined;
skipNulls?: boolean | undefined;
encode?: boolean | undefined;
encoder?:
| ((str: any, defaultEncoder: defaultEncoder, charset: string, type: "key" | "value") => string)
| undefined;
filter?: Array<string | number> | ((prefix: string, value: any) => any) | undefined;
arrayFormat?: "indices" | "brackets" | "repeat" | "comma" | undefined;
indices?: boolean | undefined;
sort?: ((a: any, b: any) => number) | undefined;
serializeDate?: ((d: Date) => string) | undefined;
format?: "RFC1738" | "RFC3986" | undefined;
encodeValuesOnly?: boolean | undefined;
addQueryPrefix?: boolean | undefined;
allowDots?: boolean | undefined;
charset?: "utf-8" | "iso-8859-1" | undefined;
charsetSentinel?: boolean | undefined;
}
interface IParseOptions {
comma?: boolean | undefined;
delimiter?: string | RegExp | undefined;
depth?: number | false | undefined;
decoder?:
| ((str: string, defaultDecoder: defaultDecoder, charset: string, type: "key" | "value") => any)
| undefined;
arrayLimit?: number | undefined;
parseArrays?: boolean | undefined;
allowDots?: boolean | undefined;
plainObjects?: boolean | undefined;
allowPrototypes?: boolean | undefined;
parameterLimit?: number | undefined;
strictNullHandling?: boolean | undefined;
ignoreQueryPrefix?: boolean | undefined;
charset?: "utf-8" | "iso-8859-1" | undefined;
charsetSentinel?: boolean | undefined;
interpretNumericEntities?: boolean | undefined;
}
interface ParsedQs {
[key: string]: undefined | string | string[] | ParsedQs | ParsedQs[];
}
function stringify(obj: any, options?: IStringifyOptions): string;
function parse(str: string, options?: IParseOptions & { decoder?: never | undefined }): ParsedQs;
function parse(str: string | Record<string, string>, options?: IParseOptions): { [key: string]: unknown };
}
Additional Details
- Last updated: Wed, 18 Oct 2023 05:47:09 GMT
- Dependencies: none
Credits
These definitions were written by Roman Korneev, Leon Yu, Belinda Teh, Melvin Lee, Arturs Vonda, Carlos Bonetti, Dan Smith, Hunter Perrin, and Jordan Harband.