@devlander/utils
Version:
Comprehensive JavaScript and TypeScript utilities for seamless development. Includes object manipulation, data validation, and more.
50 lines (49 loc) • 1.99 kB
TypeScript
/**
* Converts an object of query parameters into a URL-encoded query string.
* This function filters out keys with `undefined` or `null` values, so only defined parameters
* will be included in the final query string.
*
* @param query - An optional object containing key-value pairs for query parameters.
* - `key: string`: The query parameter name.
* - `value: string | number | boolean | null | undefined | ArrayTypeToParse`: The value of the query parameter.
* If the value is `null` or `undefined`, it will be excluded from the final query string.
* @returns A string representing the query parameters in URL-encoded format.
* - If `query` is undefined or empty, an empty string `""` will be returned.
* - If all values in the `query` object are `null` or `undefined`, an empty string `""` will be returned.
*
* @example
* Basic usage:
* ```typescript
* toQueryString({ name: "John", age: 30 });
* // Returns: "?name=John&age=30"
* ```
*
* Filtering out undefined or null values:
* ```typescript
* toQueryString({ name: "Alice", age: null, active: true });
* // Returns: "?name=Alice&active=true"
* ```
*
* Handling empty or undefined input:
* ```typescript
* toQueryString();
* // Returns: ""
*
* toQueryString({});
* // Returns: ""
*
* toQueryString({ name: null });
* // Returns: ""
* ```
*
* Handling arrays and objects in filters:
* ```typescript
* toQueryString({ filters: [{ type: "category", value: "books" }, { type: "price", value: "low" }] });
* // Returns: "?filters[0][type]=category&filters[0][value]=books&filters[1][type]=price&filters[1][value]=low"
* ```
*/
type ArrayTypeToParse = {
[key: string]: string | number | boolean | null | undefined | string[];
}[] | string[] | number[] | boolean[] | null[] | undefined[];
export declare const toQueryString: (query?: Record<string, string | number | boolean | null | undefined | ArrayTypeToParse | Record<string, string | number | boolean>>) => string;
export {};