Skip to content

Commit 9865a17

Browse files
authored
Merge pull request #11222 from kitsonk/array-slice-typings
Improve Array.prototype.splice typing
2 parents 9bad72c + 723ffab commit 9865a17

File tree

7 files changed

+45
-13
lines changed

7 files changed

+45
-13
lines changed

src/lib/es5.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1171,8 +1171,9 @@ interface Array<T> {
11711171
/**
11721172
* Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.
11731173
* @param start The zero-based location in the array from which to start removing elements.
1174+
* @param deleteCount The number of elements to remove.
11741175
*/
1175-
splice(start: number): T[];
1176+
splice(start: number, deleteCount?: number): T[];
11761177
/**
11771178
* Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.
11781179
* @param start The zero-based location in the array from which to start removing elements.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [arraySlice.ts]
2+
var arr: string[] | number[];
3+
arr.splice(1, 1);
4+
5+
6+
//// [arraySlice.js]
7+
var arr;
8+
arr.splice(1, 1);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
=== tests/cases/compiler/arraySlice.ts ===
2+
var arr: string[] | number[];
3+
>arr : Symbol(arr, Decl(arraySlice.ts, 0, 3))
4+
5+
arr.splice(1, 1);
6+
>arr.splice : Symbol(splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
7+
>arr : Symbol(arr, Decl(arraySlice.ts, 0, 3))
8+
>splice : Symbol(splice, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
9+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
=== tests/cases/compiler/arraySlice.ts ===
2+
var arr: string[] | number[];
3+
>arr : string[] | number[]
4+
5+
arr.splice(1, 1);
6+
>arr.splice(1, 1) : string[] | number[]
7+
>arr.splice : { (start: number, deleteCount?: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }
8+
>arr : string[] | number[]
9+
>splice : { (start: number, deleteCount?: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; }
10+
>1 : 1
11+
>1 : 1
12+

tests/baselines/reference/invalidSplice.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
var arr = [].splice(0,3,4,5);
33
>arr : any[]
44
>[].splice(0,3,4,5) : any[]
5-
>[].splice : { (start: number): any[]; (start: number, deleteCount: number, ...items: any[]): any[]; }
5+
>[].splice : { (start: number, deleteCount?: number): any[]; (start: number, deleteCount: number, ...items: any[]): any[]; }
66
>[] : undefined[]
7-
>splice : { (start: number): any[]; (start: number, deleteCount: number, ...items: any[]): any[]; }
7+
>splice : { (start: number, deleteCount?: number): any[]; (start: number, deleteCount: number, ...items: any[]): any[]; }
88
>0 : 0
99
>3 : 3
1010
>4 : 4

tests/baselines/reference/staticAnonymousTypeNotReferencingTypeParameter.types

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -364,9 +364,9 @@ class ListWrapper {
364364
>value : T
365365
>T : T
366366
>list.splice(index, 0, value) : T[]
367-
>list.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
367+
>list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
368368
>list : T[]
369-
>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
369+
>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
370370
>index : number
371371
>0 : 0
372372
>value : T
@@ -389,9 +389,9 @@ class ListWrapper {
389389

390390
list.splice(index, 1);
391391
>list.splice(index, 1) : T[]
392-
>list.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
392+
>list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
393393
>list : T[]
394-
>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
394+
>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
395395
>index : number
396396
>1 : 1
397397

@@ -431,9 +431,9 @@ class ListWrapper {
431431

432432
list.splice(index, 1);
433433
>list.splice(index, 1) : T[]
434-
>list.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
434+
>list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
435435
>list : T[]
436-
>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
436+
>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
437437
>index : number
438438
>1 : 1
439439
}
@@ -464,9 +464,9 @@ class ListWrapper {
464464

465465
list.splice(index, 1);
466466
>list.splice(index, 1) : T[]
467-
>list.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
467+
>list.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
468468
>list : T[]
469-
>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
469+
>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
470470
>index : number
471471
>1 : 1
472472

@@ -603,9 +603,9 @@ class ListWrapper {
603603
>length : number
604604
>T : T
605605
>l.splice(from, length) : T[]
606-
>l.splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
606+
>l.splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
607607
>l : T[]
608-
>splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
608+
>splice : { (start: number, deleteCount?: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; }
609609
>from : number
610610
>length : number
611611

tests/cases/compiler/arraySlice.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
var arr: string[] | number[];
2+
arr.splice(1, 1);

0 commit comments

Comments
 (0)