Skip to content

Instantly share code, notes, and snippets.

@conartist6
Created July 9, 2019 21:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save conartist6/d6330f61506f0b5cc5a356066106315b to your computer and use it in GitHub Desktop.
Save conartist6/d6330f61506f0b5cc5a356066106315b to your computer and use it in GitHub Desktop.
Flat typedefs
import { $IterableLike, $IterableIterator, $MaybePromise } from './internal/$iterable';
type $MaybeIterable<T> = T extends $IterableLike<infer T> ? $IterableLike<T> : any;
// prettier-ignore
declare function $flat<U = any>(
depth: 0,
iterable: $MaybeIterable<U>,
): $IterableIterator<U>;
declare function $flat<U = any>(
depth: 1,
iterable: $MaybeIterable<$MaybeIterable<U>>,
): $IterableIterator<U>;
declare function $flat<U = any>(
depth: 2,
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>,
): $IterableIterator<U>;
declare function $flat<U = any>(
depth: 3,
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>,
): $IterableIterator<U>;
declare function $flat<U = any>(
depth: 4,
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>>,
): $IterableIterator<U>;
declare function $flat<U = any>(
depth: 5,
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>>>,
): $IterableIterator<U>;
declare function $flat<U = any>(
depth: 6,
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>>>>,
): $IterableIterator<U>;
declare function $flat<U = any>(
depth: 7,
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>>>>>,
): $IterableIterator<U>;
// prettier-ignore
declare function $flat<U = any>(
depth: 0,
iterable: $MaybeIterable<U>,
): $IterableIterator<U>;
// prettier-ignore
declare function $flat(
depth: 1,
): <U = any>(
iterable: $MaybeIterable<$MaybeIterable<U>>
) => $IterableIterator<U>;
// prettier-ignore
declare function $flat(
depth: 2,
): <U = any>(
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>
) => $IterableIterator<U>;
declare function $flat(
depth: 3,
): <U = any>(
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>,
) => $IterableIterator<U>;
declare function $flat(
depth: 4,
): <U = any>(
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>>,
) => $IterableIterator<U>;
declare function $flat(
depth: 5,
): <U = any>(
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>>>,
) => $IterableIterator<U>;
declare function $flat(
depth: 6,
): <U = any>(
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>>>>,
) => $IterableIterator<U>;
declare function $flat(
depth: 7,
): <U = any>(
iterable: $MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<$MaybeIterable<U>>>>>>>>,
) => $IterableIterator<U>;
declare function $flat (
shouldFlat: (item: any) => $MaybePromise<boolean>,
depth: number,
iter: $MaybeIterable<any>
): $IterableIterator<any>
declare function $flat(iterable: $MaybeIterable<any>): $IterableIterator<any>;
declare function $flat(depth: number, iterable: $MaybeIterable<any>): $IterableIterator<any>;
declare function $flat(depth?: number): (iterable: $MaybeIterable<any>) => $IterableIterator<any>;
export default $flat;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment