Skip to content

Commit 90cbb5f

Browse files
Jonas SchürmannJonas Schürmann
Jonas Schürmann
authored and
Jonas Schürmann
committed
lib.d.ts: Include undefined in return type of JSON.stringify()
JSON.stringify() may return undefined if the given input value is undefined or if the input value is not serializable (like `function(){}`). See microsoft#18879
1 parent a7fa187 commit 90cbb5f

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

src/lib/es5.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -943,14 +943,14 @@ interface JSON {
943943
* @param replacer A function that transforms the results.
944944
* @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
945945
*/
946-
stringify(value: any, replacer?: (key: string, value: any) => any, space?: string | number): string;
946+
stringify(value: any, replacer?: (key: string, value: any) => any, space?: string | number): string | undefined;
947947
/**
948948
* Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
949949
* @param value A JavaScript value, usually an object or array, to be converted.
950950
* @param replacer An array of strings and numbers that acts as a approved list for selecting the object properties that will be stringified.
951951
* @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
952952
*/
953-
stringify(value: any, replacer?: (number | string)[] | null, space?: string | number): string;
953+
stringify(value: any, replacer?: (number | string)[] | null, space?: string | number): string | undefined;
954954
}
955955

956956
/**

tests/baselines/reference/json.stringify.types

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,50 +4,50 @@ var value = null;
44
>null : null
55

66
JSON.stringify(value, undefined, 2);
7-
>JSON.stringify(value, undefined, 2) : string
8-
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
7+
>JSON.stringify(value, undefined, 2) : string | undefined
8+
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
99
>JSON : JSON
10-
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
10+
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
1111
>value : null
1212
>undefined : undefined
1313
>2 : 2
1414

1515
JSON.stringify(value, null, 2);
16-
>JSON.stringify(value, null, 2) : string
17-
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
16+
>JSON.stringify(value, null, 2) : string | undefined
17+
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
1818
>JSON : JSON
19-
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
19+
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
2020
>value : null
2121
>null : null
2222
>2 : 2
2323

2424
JSON.stringify(value, ["a", 1], 2);
25-
>JSON.stringify(value, ["a", 1], 2) : string
26-
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
25+
>JSON.stringify(value, ["a", 1], 2) : string | undefined
26+
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
2727
>JSON : JSON
28-
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
28+
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
2929
>value : null
3030
>["a", 1] : (string | number)[]
3131
>"a" : "a"
3232
>1 : 1
3333
>2 : 2
3434

3535
JSON.stringify(value, (k) => undefined, 2);
36-
>JSON.stringify(value, (k) => undefined, 2) : string
37-
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
36+
>JSON.stringify(value, (k) => undefined, 2) : string | undefined
37+
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
3838
>JSON : JSON
39-
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
39+
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
4040
>value : null
4141
>(k) => undefined : (k: string) => undefined
4242
>k : string
4343
>undefined : undefined
4444
>2 : 2
4545

4646
JSON.stringify(value, undefined, 2);
47-
>JSON.stringify(value, undefined, 2) : string
48-
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
47+
>JSON.stringify(value, undefined, 2) : string | undefined
48+
>JSON.stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
4949
>JSON : JSON
50-
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
50+
>stringify : { (value: any, replacer?: ((key: string, value: any) => any) | undefined, space?: string | number | undefined): string | undefined; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string | undefined; }
5151
>value : null
5252
>undefined : undefined
5353
>2 : 2

0 commit comments

Comments
 (0)