iteragain
Version:
Javascript Iterable/Iterator/Generator-function utilities.
31 lines • 2.34 kB
TypeScript
import { IteratorOrIterable, FlattenDeep, FlattenDepth1, FlattenDepth2, FlattenDepth3, FlattenDepth4, FlattenDepth5 } from './types';
/**
* Flattens an iterator or iterable.
*
* **Strings are not flattened.** Any string encountered while flattening nested iterables is treated as a single
* atomic value (same as `Array.prototype.flat` / Lodash `flatten`). To split a string into characters, spread it
* into an array first (e.g. `[...str]`) or iterate the string directly as the root input.
*
* @example
* ```js
* [...flatten(['abc'])]; // ['abc']
* [...flatten('abc')]; // ['a', 'b', 'c'] — root string is iterated, not flattened as a nested value
* ```
*
* @param arg The iterator or iterable to flatten.
* @param depth The number of levels to flatten (default: Infinity, i.e. deeply).
*/
export declare function flatten<T extends IteratorOrIterable<any>>(arg: T): IterableIterator<FlattenDeep<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(arg: T, depth: 1): IterableIterator<FlattenDepth1<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(depth: 1): (arg: T) => IterableIterator<FlattenDepth1<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(arg: T, depth: 2): IterableIterator<FlattenDepth2<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(depth: 2): (arg: T) => IterableIterator<FlattenDepth2<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(arg: T, depth: 3): IterableIterator<FlattenDepth3<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(depth: 3): (arg: T) => IterableIterator<FlattenDepth3<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(arg: T, depth: 4): IterableIterator<FlattenDepth4<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(depth: 4): (arg: T) => IterableIterator<FlattenDepth4<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(arg: T, depth: 5): IterableIterator<FlattenDepth5<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(depth: 5): (arg: T) => IterableIterator<FlattenDepth5<T>>;
export declare function flatten<T extends IteratorOrIterable<any>>(arg: T, depth: number): IterableIterator<unknown>;
export default flatten;
//# sourceMappingURL=flatten.d.ts.map