• Flattens one level of the given iterable or asynchronous iterable.

    Example

    flat([1, 2, [3, 4]]); // [1, 2, 3, 4]
    

    Type Parameters

    • Iterable extends IsomorphicIterable

    Parameters

    • iterable: Iterable

      Iterable to flatten.

    Returns Iterable extends IsomorphicIterable<Item>
        ? Item extends IsomorphicIterable<SubItem>
            ? Item extends {
                    [asyncIterator]() => AsyncIterator<SubItem, any, undefined>;
                }
                ? {
                    [asyncIterator]() => AsyncIterableIterator<SubItem>;
                    next(...args) => Promise<IteratorResult<SubItem, any>>;
                    return?(value?) => Promise<IteratorResult<SubItem, any>>;
                    throw?(e?) => Promise<IteratorResult<SubItem, any>>;
                }
                : {
                    [iterator]() => IterableIterator<SubItem>;
                    next(...args) => IteratorResult<SubItem, any>;
                    return?(value?) => IteratorResult<SubItem, any>;
                    throw?(e?) => IteratorResult<SubItem, any>;
                }
            : Iterable extends {
                    [asyncIterator]() => AsyncIterator<Item, any, undefined>;
                }
                ? {
                    [asyncIterator]() => AsyncIterableIterator<Item>;
                    next(...args) => Promise<IteratorResult<Item, any>>;
                    return?(value?) => Promise<IteratorResult<Item, any>>;
                    throw?(e?) => Promise<IteratorResult<Item, any>>;
                }
                : {
                    [iterator]() => IterableIterator<Item>;
                    next(...args) => IteratorResult<Item, any>;
                    return?(value?) => IteratorResult<Item, any>;
                    throw?(e?) => IteratorResult<Item, any>;
                }
        : never

    Iterable with flatten items.