Skip to content

Commit bdb6a8a

Browse files
authored
Merge pull request #12784 from e-cloud/fix/generic-this-arg
fix: add generic info for methods with thisArg of built-in classes
2 parents 940d165 + 09fcf5b commit bdb6a8a

File tree

93 files changed

+5436
-587
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+5436
-587
lines changed

src/lib/es2015.core.d.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ 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: (value: T, index: number, obj: Array<T>) => boolean, thisArg?: any): T | undefined;
13+
find(predicate: (this: undefined, value: T, index: number, obj: Array<T>) => boolean): T | undefined;
14+
find(predicate: (this: undefined, 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;
1416

1517
/**
1618
* Returns the index of the first element in the array where predicate is true, and -1
@@ -21,7 +23,9 @@ interface Array<T> {
2123
* @param thisArg If provided, it will be used as the this value for each invocation of
2224
* predicate. If it is not provided, undefined is used instead.
2325
*/
24-
findIndex(predicate: (value: T, index: number, obj: Array<T>) => boolean, thisArg?: any): number;
26+
findIndex(predicate: (this: undefined, value: T, index: number, obj: Array<T>) => boolean): number;
27+
findIndex(predicate: (this: undefined, 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;
2529

2630
/**
2731
* Returns the this object after filling the section identified by start and end with value
@@ -52,7 +56,9 @@ interface ArrayConstructor {
5256
* @param mapfn A mapping function to call on every element of the array.
5357
* @param thisArg Value of 'this' used to invoke the mapfn.
5458
*/
55-
from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): Array<U>;
59+
from<T, U>(arrayLike: ArrayLike<T>, mapfn: (this: undefined, v: T, k: number) => U): Array<U>;
60+
from<T, U>(arrayLike: ArrayLike<T>, mapfn: (this: undefined, 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>;
5662

5763

5864
/**
@@ -357,7 +363,9 @@ interface ReadonlyArray<T> {
357363
* @param thisArg If provided, it will be used as the this value for each invocation of
358364
* predicate. If it is not provided, undefined is used instead.
359365
*/
360-
find(predicate: (value: T, index: number, obj: ReadonlyArray<T>) => boolean, thisArg?: any): T | undefined;
366+
find(predicate: (this: undefined, value: T, index: number, obj: ReadonlyArray<T>) => boolean): T | undefined;
367+
find(predicate: (this: undefined, 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;
361369

362370
/**
363371
* Returns the index of the first element in the array where predicate is true, and -1
@@ -368,7 +376,9 @@ interface ReadonlyArray<T> {
368376
* @param thisArg If provided, it will be used as the this value for each invocation of
369377
* predicate. If it is not provided, undefined is used instead.
370378
*/
371-
findIndex(predicate: (value: T, index: number, obj: Array<T>) => boolean, thisArg?: any): number;
379+
findIndex(predicate: (this: undefined, value: T, index: number, obj: Array<T>) => boolean): number;
380+
findIndex(predicate: (this: undefined, 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;
372382
}
373383

374384
interface RegExp {

src/lib/es2015.iterable.d.ts

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ 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: (v: T, k: number) => U, thisArg?: any): Array<U>;
57+
from<T, U>(iterable: Iterable<T>, mapfn: (this: undefined, v: T, k: number) => U): Array<U>;
58+
from<T, U>(iterable: Iterable<T>, mapfn: (this: undefined, 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>;
5860

5961
/**
6062
* Creates an array from an iterable object.
@@ -180,7 +182,11 @@ interface Int8ArrayConstructor {
180182
* @param mapfn A mapping function to call on every element of the array.
181183
* @param thisArg Value of 'this' used to invoke the mapfn.
182184
*/
183-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array;
185+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Int8Array;
186+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Int8Array;
187+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Int8Array;
188+
189+
from(arrayLike: Iterable<number>): Int8Array;
184190
}
185191

186192
/**
@@ -212,7 +218,11 @@ interface Uint8ArrayConstructor {
212218
* @param mapfn A mapping function to call on every element of the array.
213219
* @param thisArg Value of 'this' used to invoke the mapfn.
214220
*/
215-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;
221+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Uint8Array;
222+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Uint8Array;
223+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Uint8Array;
224+
225+
from(arrayLike: Iterable<number>): Uint8Array;
216226
}
217227

218228
/**
@@ -247,7 +257,11 @@ interface Uint8ClampedArrayConstructor {
247257
* @param mapfn A mapping function to call on every element of the array.
248258
* @param thisArg Value of 'this' used to invoke the mapfn.
249259
*/
250-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray;
260+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Uint8ClampedArray;
261+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Uint8ClampedArray;
262+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Uint8ClampedArray;
263+
264+
from(arrayLike: Iterable<number>): Uint8ClampedArray;
251265
}
252266

253267
/**
@@ -281,7 +295,11 @@ interface Int16ArrayConstructor {
281295
* @param mapfn A mapping function to call on every element of the array.
282296
* @param thisArg Value of 'this' used to invoke the mapfn.
283297
*/
284-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array;
298+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Int16Array;
299+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Int16Array;
300+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Int16Array;
301+
302+
from(arrayLike: Iterable<number>): Int16Array;
285303
}
286304

287305
/**
@@ -313,7 +331,11 @@ interface Uint16ArrayConstructor {
313331
* @param mapfn A mapping function to call on every element of the array.
314332
* @param thisArg Value of 'this' used to invoke the mapfn.
315333
*/
316-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array;
334+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Uint16Array;
335+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Uint16Array;
336+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Uint16Array;
337+
338+
from(arrayLike: Iterable<number>): Uint16Array;
317339
}
318340

319341
/**
@@ -345,7 +367,11 @@ interface Int32ArrayConstructor {
345367
* @param mapfn A mapping function to call on every element of the array.
346368
* @param thisArg Value of 'this' used to invoke the mapfn.
347369
*/
348-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array;
370+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Int32Array;
371+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Int32Array;
372+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Int32Array;
373+
374+
from(arrayLike: Iterable<number>): Int32Array;
349375
}
350376

351377
/**
@@ -377,7 +403,11 @@ interface Uint32ArrayConstructor {
377403
* @param mapfn A mapping function to call on every element of the array.
378404
* @param thisArg Value of 'this' used to invoke the mapfn.
379405
*/
380-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array;
406+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Uint32Array;
407+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Uint32Array;
408+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Uint32Array;
409+
410+
from(arrayLike: Iterable<number>): Uint32Array;
381411
}
382412

383413
/**
@@ -409,7 +439,11 @@ interface Float32ArrayConstructor {
409439
* @param mapfn A mapping function to call on every element of the array.
410440
* @param thisArg Value of 'this' used to invoke the mapfn.
411441
*/
412-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array;
442+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Float32Array;
443+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Float32Array;
444+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Float32Array;
445+
446+
from(arrayLike: Iterable<number>): Float32Array;
413447
}
414448

415449
/**
@@ -441,5 +475,9 @@ interface Float64ArrayConstructor {
441475
* @param mapfn A mapping function to call on every element of the array.
442476
* @param thisArg Value of 'this' used to invoke the mapfn.
443477
*/
444-
from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array;
478+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number): Float64Array;
479+
from(arrayLike: Iterable<number>, mapfn: (this: undefined, v: number, k: number) => number, thisArg: undefined): Float64Array;
480+
from<Z>(arrayLike: Iterable<number>, mapfn: (this: Z, v: number, k: number) => number, thisArg: Z): Float64Array;
481+
482+
from(arrayLike: Iterable<number>): Float64Array;
445483
}

0 commit comments

Comments
 (0)