Skip to content

Commit 0a041ee

Browse files
Merge pull request microsoft#28270 from AnyhowStep/json-parse-reviver-stringify-replacer-better-declaration
JSON.parse(), JSON.stringify() more specific declarations for microsoft#6955
2 parents 5bcf251 + dd3ed02 commit 0a041ee

File tree

7 files changed

+23
-23
lines changed

7 files changed

+23
-23
lines changed

lib/lib.es5.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,14 +1046,14 @@ interface JSON {
10461046
* @param reviver A function that transforms the results. This function is called for each member of the object.
10471047
* If a member contains nested objects, the nested objects are transformed before the parent object is.
10481048
*/
1049-
parse(text: string, reviver?: (key: any, value: any) => any): any;
1049+
parse(text: string, reviver?: (this: any, key: string, value: any) => any): any;
10501050
/**
10511051
* Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
10521052
* @param value A JavaScript value, usually an object or array, to be converted.
10531053
* @param replacer A function that transforms the results.
10541054
* @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
10551055
*/
1056-
stringify(value: any, replacer?: (key: string, value: any) => any, space?: string | number): string;
1056+
stringify(value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
10571057
/**
10581058
* Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
10591059
* @param value A JavaScript value, usually an object or array, to be converted.

src/lib/es5.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,14 +1036,14 @@ interface JSON {
10361036
* @param reviver A function that transforms the results. This function is called for each member of the object.
10371037
* If a member contains nested objects, the nested objects are transformed before the parent object is.
10381038
*/
1039-
parse(text: string, reviver?: (key: any, value: any) => any): any;
1039+
parse(text: string, reviver?: (this: any, key: string, value: any) => any): any;
10401040
/**
10411041
* Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
10421042
* @param value A JavaScript value, usually an object or array, to be converted.
10431043
* @param replacer A function that transforms the results.
10441044
* @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
10451045
*/
1046-
stringify(value: any, replacer?: (key: string, value: any) => any, space?: string | number): string;
1046+
stringify(value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
10471047
/**
10481048
* Converts a JavaScript value to a JavaScript Object Notation (JSON) string.
10491049
* @param value A JavaScript value, usually an object or array, to be converted.

tests/baselines/reference/controlFlowIfStatement.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ function c<T>(data: string | T): T {
101101

102102
return JSON.parse(data);
103103
>JSON.parse(data) : any
104-
>JSON.parse : (text: string, reviver?: (key: any, value: any) => any) => any
104+
>JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any
105105
>JSON : JSON
106-
>parse : (text: string, reviver?: (key: any, value: any) => any) => any
106+
>parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any
107107
>data : string | (T & string)
108108
}
109109
else {

tests/baselines/reference/controlFlowPropertyDeclarations.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,9 +316,9 @@ export class HTMLtoJSX {
316316
>'{' + JSON.stringify(whitespace) : string
317317
>'{' : "{"
318318
>JSON.stringify(whitespace) : string
319-
>JSON.stringify : { (value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
319+
>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
320320
>JSON : JSON
321-
>stringify : { (value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
321+
>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
322322
>whitespace : string
323323
>'}' : "}"
324324

tests/baselines/reference/json.stringify.types

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@ var value = null;
55

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

1515
JSON.stringify(value, null, 2);
1616
>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; }
17+
>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
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?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
2020
>value : null
2121
>null : null
2222
>2 : 2
2323

2424
JSON.stringify(value, ["a", 1], 2);
2525
>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; }
26+
>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
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?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
2929
>value : null
3030
>["a", 1] : (string | number)[]
3131
>"a" : "a"
@@ -34,20 +34,20 @@ JSON.stringify(value, ["a", 1], 2);
3434

3535
JSON.stringify(value, (k) => undefined, 2);
3636
>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; }
37+
>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
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?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
4040
>value : null
41-
>(k) => undefined : (k: string) => undefined
41+
>(k) => undefined : (this: any, k: string) => undefined
4242
>k : string
4343
>undefined : undefined
4444
>2 : 2
4545

4646
JSON.stringify(value, undefined, 2);
4747
>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; }
48+
>JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
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?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; }
5151
>value : null
5252
>undefined : undefined
5353
>2 : 2

tests/baselines/reference/parserharness.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7549,9 +7549,9 @@ module Harness {
75497549

75507550
return JSON.stringify({ usePullLanguageService: usePull });
75517551
>JSON.stringify({ usePullLanguageService: usePull }) : string
7552-
>JSON.stringify : { (value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
7552+
>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
75537553
>JSON : JSON
7554-
>stringify : { (value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
7554+
>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
75557555
>{ usePullLanguageService: usePull } : { usePullLanguageService: boolean; }
75567556
>usePullLanguageService : boolean
75577557
>usePull : boolean

tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -594,9 +594,9 @@ class ListWrapper {
594594
>ListWrapper : typeof ListWrapper
595595
>l : T[]
596596
>JSON.stringify(l) : string
597-
>JSON.stringify : { (value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
597+
>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
598598
>JSON : JSON
599-
>stringify : { (value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
599+
>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
600600
>l : T[]
601601

602602
static maximum<T>(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T {

0 commit comments

Comments
 (0)