From 0afe02ba7a31d8b969b7cc6e0c40dc22771b5a87 Mon Sep 17 00:00:00 2001 From: TonyYang Date: Sat, 22 Oct 2016 11:29:19 +0800 Subject: [PATCH 1/2] Update query-string.d.ts --- query-string/query-string.d.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/query-string/query-string.d.ts b/query-string/query-string.d.ts index 807b38935a..5ab8f0e115 100644 --- a/query-string/query-string.d.ts +++ b/query-string/query-string.d.ts @@ -4,19 +4,23 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare module "query-string" { + type value = string | boolean | number; + + interface StringifyOptions { strict?: boolean; encode?: boolean; } + /** * Parse a query string into an object. * Leading ? or # are ignored, so you can pass location.search or location.hash directly. * @param str */ - export function parse(str: string): any; + export function parse(str: string): { [key: string]: string | string[] }; /** * Stringify an object into a query string, sorting the keys. * * @param obj */ - export function stringify(obj: any, options?: {strict: boolean}): string; + export function stringify(obj: { [key: string]: value | value[] }, options?: StringifyOptions): string; /** * Extract a query string from a URL that can be passed into .parse(). From ad711ee766f4fcfe83636ec747afccb5acca39dd Mon Sep 17 00:00:00 2001 From: TonyYang Date: Sat, 22 Oct 2016 11:56:25 +0800 Subject: [PATCH 2/2] Enhance tests --- query-string/query-string-tests.ts | 37 +++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/query-string/query-string-tests.ts b/query-string/query-string-tests.ts index e270786004..ce92962b77 100644 --- a/query-string/query-string-tests.ts +++ b/query-string/query-string-tests.ts @@ -2,13 +2,34 @@ import qs = require('query-string'); -qs.stringify({ foo: 'bar' }); -qs.stringify({ foo: 'bar', bar: 'baz' }); -qs.stringify({ foo: 'bar' }, {strict: false}) -qs.parse('?foo=bar'); -qs.parse('#foo=bar'); -qs.parse('&foo=bar&foo=baz'); +namespace stringify_tests { + let result: string; + // test obj + result = qs.stringify({ + str: 'bar', + strArray: ['baz'], + num: 123, + numArray: [456], + bool: true, + boolArray: [false], + }); -qs.extract('http://foo.bar/?abc=def&hij=klm'); -qs.extract('http://foo.bar/?foo=bar'); + // test options + result = qs.stringify({ foo: 'bar' }, { strict: false }) + result = qs.stringify({ foo: 'bar' }, { encode: false }) + result = qs.stringify({ foo: 'bar' }, { strict: false, encode: false }) +} + +namespace parse_tests { + let result: { [key: string]: string | string[] }; + result = qs.parse('?foo=bar'); + result = qs.parse('#foo=bar'); + result = qs.parse('&foo=bar&foo=baz'); +} + +namespace extract_tests { + let result: string; + result = qs.extract('http://foo.bar/?abc=def&hij=klm'); + result = qs.extract('http://foo.bar/?foo=bar'); +}