Function append

  • Appends one iterable or asynchronous iterable to another.

    Example

    const appendNumbers = append([0, 1, 2, 3, 4]);

    appendNumbers(["foo", "bar"]); // ["foo", "bar", 0, 1, 2, 3, 4]
    appendNumbers([]); // [0, 1, 2, 3, 4]

    Type Parameters

    • TailIterable extends IsomorphicIterable

    Parameters

    • tailIterable: TailIterable

      Iterable or asynchronous to be appended.

    Returns (<InitialIterable>(initialIterable) => TailIterable extends IsomorphicIterable<TailItem>
        ? InitialIterable extends IsomorphicIterable<InitialItem>
            ? TailIterable extends {
                    [asyncIterator]() => AsyncIterator<TailItem, any, undefined>;
                }
                ? {
                    [asyncIterator]() => AsyncIterableIterator<TailItem | InitialItem>;
                    next(...args) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                    return?(value?) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                    throw?(e?) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                }
                : InitialIterable extends {
                        [asyncIterator]() => AsyncIterator<InitialItem, any, undefined>;
                    }
                    ? {
                        [asyncIterator]() => AsyncIterableIterator<TailItem | InitialItem>;
                        next(...args) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                        return?(value?) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                        throw?(e?) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                    }
                    : {
                        [iterator]() => IterableIterator<TailItem | InitialItem>;
                        next(...args) => IteratorResult<TailItem | InitialItem, any>;
                        return?(value?) => IteratorResult<TailItem | InitialItem, any>;
                        throw?(e?) => IteratorResult<TailItem | InitialItem, any>;
                    }
            : never
        : never)

    Curried generator function with tailIterable set in context.

      • <InitialIterable>(initialIterable): TailIterable extends IsomorphicIterable<TailItem>
            ? InitialIterable extends IsomorphicIterable<InitialItem>
                ? TailIterable extends {
                        [asyncIterator]() => AsyncIterator<TailItem, any, undefined>;
                    }
                    ? {
                        [asyncIterator]() => AsyncIterableIterator<TailItem | InitialItem>;
                        next(...args) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                        return?(value?) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                        throw?(e?) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                    }
                    : InitialIterable extends {
                            [asyncIterator]() => AsyncIterator<InitialItem, any, undefined>;
                        }
                        ? {
                            [asyncIterator]() => AsyncIterableIterator<TailItem | InitialItem>;
                            next(...args) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                            return?(value?) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                            throw?(e?) => Promise<IteratorResult<TailItem | InitialItem, any>>;
                        }
                        : {
                            [iterator]() => IterableIterator<TailItem | InitialItem>;
                            next(...args) => IteratorResult<TailItem | InitialItem, any>;
                            return?(value?) => IteratorResult<TailItem | InitialItem, any>;
                            throw?(e?) => IteratorResult<TailItem | InitialItem, any>;
                        }
                : never
            : never
      • Type Parameters

        • InitialIterable extends IsomorphicIterable

        Parameters

        • initialIterable: InitialIterable

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