Skip to content

Latest commit

 

History

History
417 lines (387 loc) · 14 KB

es2015.iterable.d.ts.md

File metadata and controls

417 lines (387 loc) · 14 KB

es2015.iterable.d.ts Diffs

Index: es2015.iterable.d.ts
===================================================================
--- es2015.iterable.d.ts
+++ es2015.iterable.d.ts
@@ -20,24 +20,23 @@
 
 type IteratorResult<T, TReturn = any> =
   | IteratorYieldResult<T>
   | IteratorReturnResult<TReturn>;
-
-interface Iterator<T, TReturn = any, TNext = any> {
+interface Iterator<T, TReturn = unknown, TNext = undefined> {
   // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.
   next(...[value]: [] | [TNext]): IteratorResult<T, TReturn>;
   return?(value?: TReturn): IteratorResult<T, TReturn>;
   throw?(e?: any): IteratorResult<T, TReturn>;
 }
 
-interface Iterable<T, TReturn = any, TNext = any> {
+interface Iterable<T, TReturn = unknown, TNext = undefined> {
   [Symbol.iterator](): Iterator<T, TReturn, TNext>;
 }
 
 /**
  * Describes a user-defined {@link Iterator} that is also iterable.
  */
-interface IterableIterator<T, TReturn = any, TNext = any>
+interface IterableIterator<T, TReturn = undefined, TNext = void>
   extends Iterator<T, TReturn, TNext> {
   [Symbol.iterator](): IterableIterator<T, TReturn, TNext>;
 }
 
@@ -92,12 +91,12 @@
    * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T, U>(
+  from<T, U, This = undefined>(
     iterable: Iterable<T> | ArrayLike<T>,
-    mapfn: (v: T, k: number) => U,
-    thisArg?: any,
+    mapfn: (this: This, v: T, k: number) => U,
+    thisArg?: This,
   ): U[];
 }
 
 interface ReadonlyArray<T> {
@@ -121,9 +120,9 @@
 }
 
 interface IArguments {
   /** Iterator */
-  [Symbol.iterator](): ArrayIterator<any>;
+  [Symbol.iterator](): ArrayIterator<unknown>;
 }
 
 interface MapIterator<T>
   extends IteratorObject<T, BuiltinIteratorReturn, unknown> {
@@ -170,9 +169,8 @@
   values(): MapIterator<V>;
 }
 
 interface MapConstructor {
-  new (): Map<any, any>;
   new <K, V>(iterable?: Iterable<readonly [K, V]> | null): Map<K, V>;
 }
 
 interface WeakMap<K extends WeakKey, V> {}
@@ -246,17 +244,17 @@
    * resolve, or rejected when any Promise is rejected.
    * @param values An iterable of Promises.
    * @returns A new Promise.
    */
-  all<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;
+  all<T>(values: Iterable<T>): Promise<Awaited<T>[]>;
 
   /**
    * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
    * or rejected.
    * @param values An iterable of Promises.
    * @returns A new Promise.
    */
-  race<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;
+  race<T>(values: Iterable<T>): Promise<Awaited<T>>;
 }
 
 interface StringIterator<T>
   extends IteratorObject<T, BuiltinIteratorReturn, unknown> {
@@ -288,25 +286,23 @@
 }
 
 interface Int8ArrayConstructor {
   new (elements: Iterable<number>): Int8Array<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Int8Array<ArrayBuffer>;
-
+  from(iterable: Iterable<number> | ArrayLike<number>): Int8Array<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Int8Array<ArrayBuffer>;
 }
 
 interface Uint8Array<TArrayBuffer extends ArrayBufferLike> {
@@ -329,25 +325,23 @@
 }
 
 interface Uint8ArrayConstructor {
   new (elements: Iterable<number>): Uint8Array<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Uint8Array<ArrayBuffer>;
-
+  from(iterable: Iterable<number> | ArrayLike<number>): Uint8Array<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Uint8Array<ArrayBuffer>;
 }
 
 interface Uint8ClampedArray<TArrayBuffer extends ArrayBufferLike> {
@@ -370,25 +364,25 @@
 }
 
 interface Uint8ClampedArrayConstructor {
   new (elements: Iterable<number>): Uint8ClampedArray<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Uint8ClampedArray<ArrayBuffer>;
-
+  from(
+    iterable: Iterable<number> | ArrayLike<number>,
+  ): Uint8ClampedArray<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Uint8ClampedArray<ArrayBuffer>;
 }
 
 interface Int16Array<TArrayBuffer extends ArrayBufferLike> {
@@ -410,25 +404,23 @@
 }
 
 interface Int16ArrayConstructor {
   new (elements: Iterable<number>): Int16Array<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Int16Array<ArrayBuffer>;
-
+  from(iterable: Iterable<number> | ArrayLike<number>): Int16Array<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Int16Array<ArrayBuffer>;
 }
 
 interface Uint16Array<TArrayBuffer extends ArrayBufferLike> {
@@ -451,25 +443,25 @@
 }
 
 interface Uint16ArrayConstructor {
   new (elements: Iterable<number>): Uint16Array<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Uint16Array<ArrayBuffer>;
-
+  from(
+    iterable: Iterable<number> | ArrayLike<number>,
+  ): Uint16Array<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Uint16Array<ArrayBuffer>;
 }
 
 interface Int32Array<TArrayBuffer extends ArrayBufferLike> {
@@ -492,25 +484,23 @@
 }
 
 interface Int32ArrayConstructor {
   new (elements: Iterable<number>): Int32Array<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Int32Array<ArrayBuffer>;
-
+  from(iterable: Iterable<number> | ArrayLike<number>): Int32Array<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Int32Array<ArrayBuffer>;
 }
 
 interface Uint32Array<TArrayBuffer extends ArrayBufferLike> {
@@ -533,25 +523,25 @@
 }
 
 interface Uint32ArrayConstructor {
   new (elements: Iterable<number>): Uint32Array<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Uint32Array<ArrayBuffer>;
-
+  from(
+    iterable: Iterable<number> | ArrayLike<number>,
+  ): Uint32Array<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Uint32Array<ArrayBuffer>;
 }
 
 interface Float32Array<TArrayBuffer extends ArrayBufferLike> {
@@ -574,25 +564,25 @@
 }
 
 interface Float32ArrayConstructor {
   new (elements: Iterable<number>): Float32Array<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Float32Array<ArrayBuffer>;
-
+  from(
+    iterable: Iterable<number> | ArrayLike<number>,
+  ): Float32Array<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Float32Array<ArrayBuffer>;
 }
 
 interface Float64Array<TArrayBuffer extends ArrayBufferLike> {
@@ -615,23 +605,23 @@
 }
 
 interface Float64ArrayConstructor {
   new (elements: Iterable<number>): Float64Array<ArrayBuffer>;
-
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    */
-  from(elements: Iterable<number>): Float64Array<ArrayBuffer>;
-
+  from(
+    iterable: Iterable<number> | ArrayLike<number>,
+  ): Float64Array<ArrayBuffer>;
   /**
-   * Creates an array from an array-like or iterable object.
-   * @param elements An iterable object to convert to an array.
+   * Creates an array from an iterable object.
+   * @param iterable An iterable object to convert to an array.
    * @param mapfn A mapping function to call on every element of the array.
    * @param thisArg Value of 'this' used to invoke the mapfn.
    */
-  from<T>(
-    elements: Iterable<T>,
-    mapfn?: (v: T, k: number) => number,
-    thisArg?: any,
+  from<T, This = undefined>(
+    iterable: Iterable<T> | ArrayLike<T>,
+    mapfn: (this: This, v: T, k: number) => number,
+    thisArg?: This,
   ): Float64Array<ArrayBuffer>;
 }