Skip to content

Commit 062104d

Browse files
authored
Simplify return type of Object.fromEntries (#37457)
PropertyKey is accurate but not usable. Fixes #31393
1 parent 2df421b commit 062104d

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

src/lib/es2019.object.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ interface ObjectConstructor {
55
* Returns an object created by key-value entries for properties and methods
66
* @param entries An iterable object that contains key-value entries for properties and methods.
77
*/
8-
fromEntries<T = any>(entries: Iterable<readonly [PropertyKey, T]>): { [k in PropertyKey]: T };
8+
fromEntries<T = any>(entries: Iterable<readonly [PropertyKey, T]>): { [k: string]: T };
99

1010
/**
1111
* Returns an object created by key-value entries for properties and methods

tests/baselines/reference/objectFromEntries.types

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
=== tests/cases/compiler/objectFromEntries.ts ===
22
const o = Object.fromEntries([['a', 1], ['b', 2], ['c', 3]]);
3-
>o : { [x: string]: number; [x: number]: number; }
4-
>Object.fromEntries([['a', 1], ['b', 2], ['c', 3]]) : { [x: string]: number; [x: number]: number; }
5-
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
3+
>o : { [k: string]: number; }
4+
>Object.fromEntries([['a', 1], ['b', 2], ['c', 3]]) : { [k: string]: number; }
5+
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
66
>Object : ObjectConstructor
7-
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
7+
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
88
>[['a', 1], ['b', 2], ['c', 3]] : [string, number][]
99
>['a', 1] : [string, number]
1010
>'a' : "a"
@@ -17,20 +17,20 @@ const o = Object.fromEntries([['a', 1], ['b', 2], ['c', 3]]);
1717
>3 : 3
1818

1919
const o2 = Object.fromEntries(new URLSearchParams());
20-
>o2 : { [x: string]: string; [x: number]: string; }
21-
>Object.fromEntries(new URLSearchParams()) : { [x: string]: string; [x: number]: string; }
22-
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
20+
>o2 : { [k: string]: string; }
21+
>Object.fromEntries(new URLSearchParams()) : { [k: string]: string; }
22+
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
2323
>Object : ObjectConstructor
24-
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
24+
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
2525
>new URLSearchParams() : URLSearchParams
2626
>URLSearchParams : { new (init?: string | URLSearchParams | string[][] | Record<string, string>): URLSearchParams; prototype: URLSearchParams; toString(): string; }
2727

2828
const o3 = Object.fromEntries(new Map([[Symbol("key"), "value"]]));
29-
>o3 : { [x: string]: string; [x: number]: string; }
30-
>Object.fromEntries(new Map([[Symbol("key"), "value"]])) : { [x: string]: string; [x: number]: string; }
31-
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
29+
>o3 : { [k: string]: string; }
30+
>Object.fromEntries(new Map([[Symbol("key"), "value"]])) : { [k: string]: string; }
31+
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
3232
>Object : ObjectConstructor
33-
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
33+
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
3434
>new Map([[Symbol("key"), "value"]]) : Map<symbol, string>
3535
>Map : MapConstructor
3636
>[[Symbol("key"), "value"]] : [symbol, string][]
@@ -60,9 +60,9 @@ const frozenArray = Object.freeze([['a', 1], ['b', 2], ['c', 3]]);
6060
const o4 = Object.fromEntries(frozenArray);
6161
>o4 : any
6262
>Object.fromEntries(frozenArray) : any
63-
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
63+
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
6464
>Object : ObjectConstructor
65-
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
65+
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
6666
>frozenArray : readonly (string | number)[][]
6767

6868
const frozenArray2: readonly [string, number][] = Object.freeze([['a', 1], ['b', 2], ['c', 3]]);
@@ -83,10 +83,10 @@ const frozenArray2: readonly [string, number][] = Object.freeze([['a', 1], ['b',
8383
>3 : 3
8484

8585
const o5 = Object.fromEntries(frozenArray2);
86-
>o5 : { [x: string]: number; [x: number]: number; }
87-
>Object.fromEntries(frozenArray2) : { [x: string]: number; [x: number]: number; }
88-
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
86+
>o5 : { [k: string]: number; }
87+
>Object.fromEntries(frozenArray2) : { [k: string]: number; }
88+
>Object.fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
8989
>Object : ObjectConstructor
90-
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [x: string]: T; [x: number]: T; }; (entries: Iterable<readonly any[]>): any; }
90+
>fromEntries : { <T = any>(entries: Iterable<readonly [string | number | symbol, T]>): { [k: string]: T; }; (entries: Iterable<readonly any[]>): any; }
9191
>frozenArray2 : readonly [string, number][]
9292

0 commit comments

Comments
 (0)