Функции-декораторы предназначены для декорирования значений, например добавления определенной функциональности, или данных к существующей коллекции. Используются с методом pipe
, хотя могут использоваться обособленно без контейнеров.
Добавляет индекс к каждому элементу итерируемой коллекции. Создаёт итератор, который возвращает пары [индекс, значение]
для каждого элемента исходной коллекции.
enumerable<T>(iterable: Iterable<T>): IterableIterator<[number, T]>;
Использование:
import { from, enumerable } from 'iterity';
const collection = from(['one', 'two']).pipe(enumerable); // OUTPUT: [[1, "one"], [2, "two"]]
Добавляет индекс к каждому элементу итерируемой коллекции. Создаёт асинхронный итератор, который возвращает пары [индекс, значение]
для каждого элемента исходной коллекции.
enumerableAsync<T>(iterable: AsyncIterable<T>): AsyncIterableIterator<[number, T]>;
Использование:
import { AsyncCollection, enumerableAsync } from 'iterity';
const collection = new AsyncCollection(['one', 'two']).pipe(enumerableAsync); // OUTPUT: [[1, "one"], [2, "two"]]
Создает итератор, который возвращает те же элементы, что и исходная коллекция, но позволяет выполнить заданное действие (эффект) для каждого элемента при прохождении по ним.
tap<T>(effect: (value: T) => void): (iterable: Iterable<T>) => IterableIterator<T>;
Использование:
import { from, tap } from 'iterity';
const collection = from([1, 2, 3]).pipe(tap((value) => console.log(value))); // OUTPUT: [1, 2, 3]
Создает асинхронный итератор, который возвращает те же элементы, что и исходная коллекция, но позволяет выполнить заданное действие (эффект) для каждого элемента при прохождении по ним.
tapAsync<T>(effect: (value: T) => void): (iterable: AsyncIterable<T>) => AsyncIterableIterator<T>;
Использование:
import { AsyncCollection, tapAsync } from 'iterity';
const collection = new AsyncCollection([1, 2, 3]).pipe(
tapAsync((value) => console.log(value))
); // OUTPUT: [1, 2, 3]