Skip to content

Commit 562abf3

Browse files
authored
Follow up on #16223 cleaning up Array declarations (#18116)
* Follow up on #16223, Remove generic signatures from Array, ReadOnlyArray and TypedArrays * Remove test * Accept baselines * Remove invalid `this: void` in callbacks * accept baselines
1 parent 2b4b629 commit 562abf3

21 files changed

+192
-4671
lines changed

src/lib/es2015.core.d.ts

+5-22
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ interface Array<T> {
1010
* @param thisArg If provided, it will be used as the this value for each invocation of
1111
* predicate. If it is not provided, undefined is used instead.
1212
*/
13-
find(predicate: (this: void, value: T, index: number, obj: Array<T>) => boolean): T | undefined;
14-
find(predicate: (this: void, value: T, index: number, obj: Array<T>) => boolean, thisArg: undefined): T | undefined;
15-
find<Z>(predicate: (this: Z, value: T, index: number, obj: Array<T>) => boolean, thisArg: Z): T | undefined;
13+
find(predicate: (value: T, index: number, obj: Array<T>) => boolean, thisArg?: any): T | undefined;
1614

1715
/**
1816
* Returns the index of the first element in the array where predicate is true, and -1
@@ -23,9 +21,7 @@ interface Array<T> {
2321
* @param thisArg If provided, it will be used as the this value for each invocation of
2422
* predicate. If it is not provided, undefined is used instead.
2523
*/
26-
findIndex(predicate: (this: void, value: T, index: number, obj: Array<T>) => boolean): number;
27-
findIndex(predicate: (this: void, value: T, index: number, obj: Array<T>) => boolean, thisArg: undefined): number;
28-
findIndex<Z>(predicate: (this: Z, value: T, index: number, obj: Array<T>) => boolean, thisArg: Z): number;
24+
findIndex(predicate: (value: T, index: number, obj: Array<T>) => boolean, thisArg?: any): number;
2925

3026
/**
3127
* Returns the this object after filling the section identified by start and end with value
@@ -56,16 +52,7 @@ interface ArrayConstructor {
5652
* @param mapfn A mapping function to call on every element of the array.
5753
* @param thisArg Value of 'this' used to invoke the mapfn.
5854
*/
59-
from<T, U>(arrayLike: ArrayLike<T>, mapfn: (this: void, v: T, k: number) => U): Array<U>;
60-
from<T, U>(arrayLike: ArrayLike<T>, mapfn: (this: void, v: T, k: number) => U, thisArg: undefined): Array<U>;
61-
from<Z, T, U>(arrayLike: ArrayLike<T>, mapfn: (this: Z, v: T, k: number) => U, thisArg: Z): Array<U>;
62-
63-
64-
/**
65-
* Creates an array from an array-like object.
66-
* @param arrayLike An array-like object to convert to an array.
67-
*/
68-
from<T>(arrayLike: ArrayLike<T>): Array<T>;
55+
from<T, U = T>(arrayLike: ArrayLike<T>, mapfn?: (v: T, k: number) => U, thisArg?: any): Array<U>;
6956

7057
/**
7158
* Returns a new array from a set of elements.
@@ -363,9 +350,7 @@ interface ReadonlyArray<T> {
363350
* @param thisArg If provided, it will be used as the this value for each invocation of
364351
* predicate. If it is not provided, undefined is used instead.
365352
*/
366-
find(predicate: (this: void, value: T, index: number, obj: ReadonlyArray<T>) => boolean): T | undefined;
367-
find(predicate: (this: void, value: T, index: number, obj: ReadonlyArray<T>) => boolean, thisArg: undefined): T | undefined;
368-
find<Z>(predicate: (this: Z, value: T, index: number, obj: ReadonlyArray<T>) => boolean, thisArg: Z): T | undefined;
353+
find(predicate: (value: T, index: number, obj: ReadonlyArray<T>) => boolean, thisArg?: any): T | undefined;
369354

370355
/**
371356
* Returns the index of the first element in the array where predicate is true, and -1
@@ -376,9 +361,7 @@ interface ReadonlyArray<T> {
376361
* @param thisArg If provided, it will be used as the this value for each invocation of
377362
* predicate. If it is not provided, undefined is used instead.
378363
*/
379-
findIndex(predicate: (this: void, value: T, index: number, obj: Array<T>) => boolean): number;
380-
findIndex(predicate: (this: void, value: T, index: number, obj: Array<T>) => boolean, thisArg: undefined): number;
381-
findIndex<Z>(predicate: (this: Z, value: T, index: number, obj: Array<T>) => boolean, thisArg: Z): number;
364+
findIndex(predicate: (value: T, index: number, obj: ReadonlyArray<T>) => boolean, thisArg?: any): number;
382365
}
383366

384367
interface RegExp {

src/lib/es2015.iterable.d.ts

+10-54
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,7 @@ interface ArrayConstructor {
5454
* @param mapfn A mapping function to call on every element of the array.
5555
* @param thisArg Value of 'this' used to invoke the mapfn.
5656
*/
57-
from<T, U>(iterable: Iterable<T>, mapfn: (this: void, v: T, k: number) => U): Array<U>;
58-
from<T, U>(iterable: Iterable<T>, mapfn: (this: void, v: T, k: number) => U, thisArg: undefined): Array<U>;
59-
from<Z, T, U>(iterable: Iterable<T>, mapfn: (this: Z, v: T, k: number) => U, thisArg: Z): Array<U>;
60-
61-
/**
62-
* Creates an array from an iterable object.
63-
* @param iterable An iterable object to convert to an array.
64-
*/
65-
from<T>(iterable: Iterable<T>): Array<T>;
57+
from<T, U = T>(iterable: Iterable<T>, mapfn?: (v: T, k: number) => U, thisArg?: any): Array<U>;
6658
}
6759

6860
interface ReadonlyArray<T> {
@@ -246,11 +238,7 @@ interface Int8ArrayConstructor {
246238
* @param mapfn A mapping function to call on every element of the array.
247239
* @param thisArg Value of 'this' used to invoke the mapfn.
248240
*/
249-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Int8Array;
250-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Int8Array;
251-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Int8Array;
252-
253-
from(arrayLike: Iterable<number>): Int8Array;
241+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array;
254242
}
255243

256244
/**
@@ -282,11 +270,7 @@ interface Uint8ArrayConstructor {
282270
* @param mapfn A mapping function to call on every element of the array.
283271
* @param thisArg Value of 'this' used to invoke the mapfn.
284272
*/
285-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Uint8Array;
286-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Uint8Array;
287-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Uint8Array;
288-
289-
from(arrayLike: Iterable<number>): Uint8Array;
273+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;
290274
}
291275

292276
/**
@@ -321,11 +305,7 @@ interface Uint8ClampedArrayConstructor {
321305
* @param mapfn A mapping function to call on every element of the array.
322306
* @param thisArg Value of 'this' used to invoke the mapfn.
323307
*/
324-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Uint8ClampedArray;
325-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Uint8ClampedArray;
326-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Uint8ClampedArray;
327-
328-
from(arrayLike: Iterable<number>): Uint8ClampedArray;
308+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray;
329309
}
330310

331311
/**
@@ -359,11 +339,7 @@ interface Int16ArrayConstructor {
359339
* @param mapfn A mapping function to call on every element of the array.
360340
* @param thisArg Value of 'this' used to invoke the mapfn.
361341
*/
362-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Int16Array;
363-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Int16Array;
364-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Int16Array;
365-
366-
from(arrayLike: Iterable<number>): Int16Array;
342+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array;
367343
}
368344

369345
/**
@@ -395,11 +371,7 @@ interface Uint16ArrayConstructor {
395371
* @param mapfn A mapping function to call on every element of the array.
396372
* @param thisArg Value of 'this' used to invoke the mapfn.
397373
*/
398-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Uint16Array;
399-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Uint16Array;
400-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Uint16Array;
401-
402-
from(arrayLike: Iterable<number>): Uint16Array;
374+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array;
403375
}
404376

405377
/**
@@ -431,11 +403,7 @@ interface Int32ArrayConstructor {
431403
* @param mapfn A mapping function to call on every element of the array.
432404
* @param thisArg Value of 'this' used to invoke the mapfn.
433405
*/
434-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Int32Array;
435-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Int32Array;
436-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Int32Array;
437-
438-
from(arrayLike: Iterable<number>): Int32Array;
406+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array;
439407
}
440408

441409
/**
@@ -467,11 +435,7 @@ interface Uint32ArrayConstructor {
467435
* @param mapfn A mapping function to call on every element of the array.
468436
* @param thisArg Value of 'this' used to invoke the mapfn.
469437
*/
470-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Uint32Array;
471-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Uint32Array;
472-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Uint32Array;
473-
474-
from(arrayLike: Iterable<number>): Uint32Array;
438+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array;
475439
}
476440

477441
/**
@@ -503,11 +467,7 @@ interface Float32ArrayConstructor {
503467
* @param mapfn A mapping function to call on every element of the array.
504468
* @param thisArg Value of 'this' used to invoke the mapfn.
505469
*/
506-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Float32Array;
507-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Float32Array;
508-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Float32Array;
509-
510-
from(arrayLike: Iterable<number>): Float32Array;
470+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array;
511471
}
512472

513473
/**
@@ -539,9 +499,5 @@ interface Float64ArrayConstructor {
539499
* @param mapfn A mapping function to call on every element of the array.
540500
* @param thisArg Value of 'this' used to invoke the mapfn.
541501
*/
542-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number): Float64Array;
543-
from(arrayLike: Iterable<number>, mapfn: (this: void, v: number, k: number) => number, thisArg: undefined): Float64Array;
544-
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Float64Array;
545-
546-
from(arrayLike: Iterable<number>): Float64Array;
502+
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array;
547503
}

src/lib/es5.d.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -1635,7 +1635,7 @@ interface Int8Array {
16351635
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
16361636
* If thisArg is omitted, undefined is used as the this value.
16371637
*/
1638-
map(callbackfn: (this: void, value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array;
1638+
map(callbackfn: (value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array;
16391639

16401640
/**
16411641
* Calls the specified callback function for all the elements in an array. The return value of
@@ -1902,7 +1902,7 @@ interface Uint8Array {
19021902
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
19031903
* If thisArg is omitted, undefined is used as the this value.
19041904
*/
1905-
map(callbackfn: (this: void, value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array;
1905+
map(callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array;
19061906

19071907
/**
19081908
* Calls the specified callback function for all the elements in an array. The return value of
@@ -2169,7 +2169,7 @@ interface Uint8ClampedArray {
21692169
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
21702170
* If thisArg is omitted, undefined is used as the this value.
21712171
*/
2172-
map(callbackfn: (this: void, value: number, index: number, array: Uint8ClampedArray) => number, thisArg?: any): Uint8ClampedArray;
2172+
map(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => number, thisArg?: any): Uint8ClampedArray;
21732173

21742174
/**
21752175
* Calls the specified callback function for all the elements in an array. The return value of
@@ -2366,7 +2366,7 @@ interface Int16Array {
23662366
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
23672367
* If thisArg is omitted, undefined is used as the this value.
23682368
*/
2369-
filter(callbackfn: (this: void, value: number, index: number, array: Int16Array) => any, thisArg?: any): Int16Array;
2369+
filter(callbackfn: (value: number, index: number, array: Int16Array) => any, thisArg?: any): Int16Array;
23702370

23712371
/**
23722372
* Returns the value of the first element in the array where predicate is true, and undefined
@@ -2434,7 +2434,7 @@ interface Int16Array {
24342434
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
24352435
* If thisArg is omitted, undefined is used as the this value.
24362436
*/
2437-
map(callbackfn: (this: void, value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array;
2437+
map(callbackfn: (value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array;
24382438

24392439
/**
24402440
* Calls the specified callback function for all the elements in an array. The return value of
@@ -2702,7 +2702,7 @@ interface Uint16Array {
27022702
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
27032703
* If thisArg is omitted, undefined is used as the this value.
27042704
*/
2705-
map(callbackfn: (this: void, value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array;
2705+
map(callbackfn: (value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array;
27062706

27072707
/**
27082708
* Calls the specified callback function for all the elements in an array. The return value of
@@ -3235,7 +3235,7 @@ interface Uint32Array {
32353235
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
32363236
* If thisArg is omitted, undefined is used as the this value.
32373237
*/
3238-
map(callbackfn: (this: void, value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array;
3238+
map(callbackfn: (value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array;
32393239

32403240
/**
32413241
* Calls the specified callback function for all the elements in an array. The return value of
@@ -3502,7 +3502,7 @@ interface Float32Array {
35023502
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
35033503
* If thisArg is omitted, undefined is used as the this value.
35043504
*/
3505-
map(callbackfn: (this: void, value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array;
3505+
map(callbackfn: (value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array;
35063506

35073507
/**
35083508
* Calls the specified callback function for all the elements in an array. The return value of
@@ -3770,7 +3770,7 @@ interface Float64Array {
37703770
* @param thisArg An object to which the this keyword can refer in the callbackfn function.
37713771
* If thisArg is omitted, undefined is used as the this value.
37723772
*/
3773-
map(callbackfn: (this: void, value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array;
3773+
map(callbackfn: (value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array;
37743774

37753775
/**
37763776
* Calls the specified callback function for all the elements in an array. The return value of

tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.symbols

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ function f(x: number, y: number, z: number) {
77
>z : Symbol(z, Decl(modularizeLibrary_NoErrorDuplicateLibOptions1.ts, 1, 32))
88

99
return Array.from(arguments);
10-
>Array.from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
10+
>Array.from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
1111
>Array : Symbol(Array, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
12-
>from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
12+
>from : Symbol(ArrayConstructor.from, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --))
1313
>arguments : Symbol(arguments)
1414
}
1515

tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ function f(x: number, y: number, z: number) {
88

99
return Array.from(arguments);
1010
>Array.from(arguments) : any[]
11-
>Array.from : { <T, U>(iterable: Iterable<T>, mapfn: (this: void, v: T, k: number) => U): U[]; <T, U>(iterable: Iterable<T>, mapfn: (this: void, v: T, k: number) => U, thisArg: undefined): U[]; <Z, T, U>(iterable: Iterable<T>, mapfn: (this: Z, v: T, k: number) => U, thisArg: Z): U[]; <T>(iterable: Iterable<T>): T[]; <T, U>(arrayLike: ArrayLike<T>, mapfn: (this: void, v: T, k: number) => U): U[]; <T, U>(arrayLike: ArrayLike<T>, mapfn: (this: void, v: T, k: number) => U, thisArg: undefined): U[]; <Z, T, U>(arrayLike: ArrayLike<T>, mapfn: (this: Z, v: T, k: number) => U, thisArg: Z): U[]; <T>(arrayLike: ArrayLike<T>): T[]; }
11+
>Array.from : { <T, U = T>(iterable: Iterable<T>, mapfn?: (v: T, k: number) => U, thisArg?: any): U[]; <T, U = T>(arrayLike: ArrayLike<T>, mapfn?: (v: T, k: number) => U, thisArg?: any): U[]; }
1212
>Array : ArrayConstructor
13-
>from : { <T, U>(iterable: Iterable<T>, mapfn: (this: void, v: T, k: number) => U): U[]; <T, U>(iterable: Iterable<T>, mapfn: (this: void, v: T, k: number) => U, thisArg: undefined): U[]; <Z, T, U>(iterable: Iterable<T>, mapfn: (this: Z, v: T, k: number) => U, thisArg: Z): U[]; <T>(iterable: Iterable<T>): T[]; <T, U>(arrayLike: ArrayLike<T>, mapfn: (this: void, v: T, k: number) => U): U[]; <T, U>(arrayLike: ArrayLike<T>, mapfn: (this: void, v: T, k: number) => U, thisArg: undefined): U[]; <Z, T, U>(arrayLike: ArrayLike<T>, mapfn: (this: Z, v: T, k: number) => U, thisArg: Z): U[]; <T>(arrayLike: ArrayLike<T>): T[]; }
13+
>from : { <T, U = T>(iterable: Iterable<T>, mapfn?: (v: T, k: number) => U, thisArg?: any): U[]; <T, U = T>(arrayLike: ArrayLike<T>, mapfn?: (v: T, k: number) => U, thisArg?: any): U[]; }
1414
>arguments : IArguments
1515
}
1616

0 commit comments

Comments
 (0)