Skip to content

Commit 327bd09

Browse files
Add non-mutating Array methods to es2023 in the lib/target suggestion list (#58951)
1 parent beb375a commit 327bd09

8 files changed

+801
-0
lines changed

src/compiler/utilities.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,6 +1336,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
13361336
es2023: [
13371337
"findLastIndex",
13381338
"findLast",
1339+
"toReversed",
1340+
"toSorted",
1341+
"toSpliced",
1342+
"with",
13391343
],
13401344
})),
13411345
Iterator: new Map(Object.entries({
@@ -1613,6 +1617,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16131617
es2023: [
16141618
"findLastIndex",
16151619
"findLast",
1620+
"toReversed",
1621+
"toSorted",
1622+
"toSpliced",
1623+
"with",
16161624
],
16171625
})),
16181626
Uint8Array: new Map(Object.entries({
@@ -1622,6 +1630,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16221630
es2023: [
16231631
"findLastIndex",
16241632
"findLast",
1633+
"toReversed",
1634+
"toSorted",
1635+
"toSpliced",
1636+
"with",
16251637
],
16261638
})),
16271639
Uint8ClampedArray: new Map(Object.entries({
@@ -1631,6 +1643,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16311643
es2023: [
16321644
"findLastIndex",
16331645
"findLast",
1646+
"toReversed",
1647+
"toSorted",
1648+
"toSpliced",
1649+
"with",
16341650
],
16351651
})),
16361652
Int16Array: new Map(Object.entries({
@@ -1640,6 +1656,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16401656
es2023: [
16411657
"findLastIndex",
16421658
"findLast",
1659+
"toReversed",
1660+
"toSorted",
1661+
"toSpliced",
1662+
"with",
16431663
],
16441664
})),
16451665
Uint16Array: new Map(Object.entries({
@@ -1649,6 +1669,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16491669
es2023: [
16501670
"findLastIndex",
16511671
"findLast",
1672+
"toReversed",
1673+
"toSorted",
1674+
"toSpliced",
1675+
"with",
16521676
],
16531677
})),
16541678
Int32Array: new Map(Object.entries({
@@ -1658,6 +1682,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16581682
es2023: [
16591683
"findLastIndex",
16601684
"findLast",
1685+
"toReversed",
1686+
"toSorted",
1687+
"toSpliced",
1688+
"with",
16611689
],
16621690
})),
16631691
Uint32Array: new Map(Object.entries({
@@ -1667,6 +1695,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16671695
es2023: [
16681696
"findLastIndex",
16691697
"findLast",
1698+
"toReversed",
1699+
"toSorted",
1700+
"toSpliced",
1701+
"with",
16701702
],
16711703
})),
16721704
Float32Array: new Map(Object.entries({
@@ -1676,6 +1708,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16761708
es2023: [
16771709
"findLastIndex",
16781710
"findLast",
1711+
"toReversed",
1712+
"toSorted",
1713+
"toSpliced",
1714+
"with",
16791715
],
16801716
})),
16811717
Float64Array: new Map(Object.entries({
@@ -1685,6 +1721,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16851721
es2023: [
16861722
"findLastIndex",
16871723
"findLast",
1724+
"toReversed",
1725+
"toSorted",
1726+
"toSpliced",
1727+
"with",
16881728
],
16891729
})),
16901730
BigInt64Array: new Map(Object.entries({
@@ -1695,6 +1735,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
16951735
es2023: [
16961736
"findLastIndex",
16971737
"findLast",
1738+
"toReversed",
1739+
"toSorted",
1740+
"toSpliced",
1741+
"with",
16981742
],
16991743
})),
17001744
BigUint64Array: new Map(Object.entries({
@@ -1705,6 +1749,10 @@ export const getScriptTargetFeatures = /* @__PURE__ */ memoize((): ScriptTargetF
17051749
es2023: [
17061750
"findLastIndex",
17071751
"findLast",
1752+
"toReversed",
1753+
"toSorted",
1754+
"toSpliced",
1755+
"with",
17081756
],
17091757
})),
17101758
Error: new Map(Object.entries({
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
doYouNeedToChangeYourTargetLibraryES2023.ts(7,31): error TS2550: Property 'findLastIndex' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
2+
doYouNeedToChangeYourTargetLibraryES2023.ts(7,45): error TS7006: Parameter 'v' implicitly has an 'any' type.
3+
doYouNeedToChangeYourTargetLibraryES2023.ts(8,31): error TS2550: Property 'findLastIndex' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
4+
doYouNeedToChangeYourTargetLibraryES2023.ts(10,26): error TS2550: Property 'findLast' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
5+
doYouNeedToChangeYourTargetLibraryES2023.ts(11,26): error TS2550: Property 'findLast' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
6+
doYouNeedToChangeYourTargetLibraryES2023.ts(13,27): error TS2550: Property 'toSorted' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
7+
doYouNeedToChangeYourTargetLibraryES2023.ts(15,29): error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
8+
doYouNeedToChangeYourTargetLibraryES2023.ts(16,29): error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
9+
doYouNeedToChangeYourTargetLibraryES2023.ts(17,29): error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
10+
doYouNeedToChangeYourTargetLibraryES2023.ts(18,29): error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
11+
doYouNeedToChangeYourTargetLibraryES2023.ts(19,29): error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
12+
doYouNeedToChangeYourTargetLibraryES2023.ts(21,34): error TS2550: Property 'with' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
13+
doYouNeedToChangeYourTargetLibraryES2023.ts(22,29): error TS2550: Property 'with' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
14+
15+
16+
==== doYouNeedToChangeYourTargetLibraryES2023.ts (13 errors) ====
17+
export let array = [0, 2, 3, 4];
18+
19+
function somePredicate(x: any): boolean {
20+
return x === 4;
21+
}
22+
23+
export let lastIndex1 = array.findLastIndex(v => v === 4);
24+
~~~~~~~~~~~~~
25+
!!! error TS2550: Property 'findLastIndex' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
26+
~
27+
!!! error TS7006: Parameter 'v' implicitly has an 'any' type.
28+
export let lastIndex2 = array.findLastIndex(somePredicate);
29+
~~~~~~~~~~~~~
30+
!!! error TS2550: Property 'findLastIndex' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
31+
32+
export let last1 = array.findLast(somePredicate);
33+
~~~~~~~~
34+
!!! error TS2550: Property 'findLast' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
35+
export let last2 = array.findLast(somePredicate);
36+
~~~~~~~~
37+
!!! error TS2550: Property 'findLast' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
38+
39+
export let sorted = array.toSorted();
40+
~~~~~~~~
41+
!!! error TS2550: Property 'toSorted' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
42+
43+
export let spliced1 = array.toSpliced(2);
44+
~~~~~~~~~
45+
!!! error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
46+
export let spliced2 = array.toSpliced(2, 1);
47+
~~~~~~~~~
48+
!!! error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
49+
export let spliced3 = array.toSpliced(2, 1, 4, 5, 6, 7);
50+
~~~~~~~~~
51+
!!! error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
52+
export let spliced4 = array.toSpliced(2, undefined);
53+
~~~~~~~~~
54+
!!! error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
55+
export let spliced5 = array.toSpliced(2, undefined, 4, 5, 6, 7);
56+
~~~~~~~~~
57+
!!! error TS2550: Property 'toSpliced' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
58+
59+
export let startsWithOne = array.with(0, 1);
60+
~~~~
61+
!!! error TS2550: Property 'with' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
62+
export let inTheEnd = array.with(-1, 1);
63+
~~~~
64+
!!! error TS2550: Property 'with' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
//// [tests/cases/compiler/doYouNeedToChangeYourTargetLibraryES2023.ts] ////
2+
3+
=== doYouNeedToChangeYourTargetLibraryES2023.ts ===
4+
export let array = [0, 2, 3, 4];
5+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
6+
7+
function somePredicate(x: any): boolean {
8+
>somePredicate : Symbol(somePredicate, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 32))
9+
>x : Symbol(x, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 2, 23))
10+
11+
return x === 4;
12+
>x : Symbol(x, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 2, 23))
13+
}
14+
15+
export let lastIndex1 = array.findLastIndex(v => v === 4);
16+
>lastIndex1 : Symbol(lastIndex1, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 6, 10))
17+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
18+
>v : Symbol(v, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 6, 44))
19+
>v : Symbol(v, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 6, 44))
20+
21+
export let lastIndex2 = array.findLastIndex(somePredicate);
22+
>lastIndex2 : Symbol(lastIndex2, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 7, 10))
23+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
24+
>somePredicate : Symbol(somePredicate, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 32))
25+
26+
export let last1 = array.findLast(somePredicate);
27+
>last1 : Symbol(last1, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 9, 10))
28+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
29+
>somePredicate : Symbol(somePredicate, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 32))
30+
31+
export let last2 = array.findLast(somePredicate);
32+
>last2 : Symbol(last2, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 10, 10))
33+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
34+
>somePredicate : Symbol(somePredicate, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 32))
35+
36+
export let sorted = array.toSorted();
37+
>sorted : Symbol(sorted, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 12, 10))
38+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
39+
40+
export let spliced1 = array.toSpliced(2);
41+
>spliced1 : Symbol(spliced1, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 14, 10))
42+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
43+
44+
export let spliced2 = array.toSpliced(2, 1);
45+
>spliced2 : Symbol(spliced2, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 15, 10))
46+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
47+
48+
export let spliced3 = array.toSpliced(2, 1, 4, 5, 6, 7);
49+
>spliced3 : Symbol(spliced3, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 16, 10))
50+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
51+
52+
export let spliced4 = array.toSpliced(2, undefined);
53+
>spliced4 : Symbol(spliced4, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 17, 10))
54+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
55+
>undefined : Symbol(undefined)
56+
57+
export let spliced5 = array.toSpliced(2, undefined, 4, 5, 6, 7);
58+
>spliced5 : Symbol(spliced5, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 18, 10))
59+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
60+
>undefined : Symbol(undefined)
61+
62+
export let startsWithOne = array.with(0, 1);
63+
>startsWithOne : Symbol(startsWithOne, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 20, 10))
64+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
65+
66+
export let inTheEnd = array.with(-1, 1);
67+
>inTheEnd : Symbol(inTheEnd, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 21, 10))
68+
>array : Symbol(array, Decl(doYouNeedToChangeYourTargetLibraryES2023.ts, 0, 10))
69+

0 commit comments

Comments
 (0)