В TypeScript вы можете типизировать функцию reduce
с использованием дженериков.
reduce
- это функция, которая применяет указанную коллекцию (например, массив) к функции аккумулятора, чтобы получить единственное значение. Вот пример его типизации:
function reduce<T, U>( array: T[], callback: (accumulator: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U ): U { let accumulator = initialValue; for (let i = 0; i < array.length; i++) { accumulator = callback(accumulator, array[i], i, array); } return accumulator; }
В этом примере T
- это тип элементов массива, а U
- тип значения аккумулятора. Коллбэк-функция callback
принимает в качестве параметров текущее значение аккумулятора, текущий элемент массива, текущий индекс и сам массив. Она должна возвращать обновленное значение аккумулятора.
Например, мы можем использовать типизированную функцию reduce
следующим образом:
const numbers = [1, 2, 3, 4, 5]; const sum = reduce(numbers, (accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); // выводит 15 const product = reduce(numbers, (accumulator, currentValue) => accumulator * currentValue, 1); console.log(product); // выводит 120
В этом примере мы используем reduce
для подсчета суммы и произведения элементов массива numbers
. В функции обратного вызова мы складываем или умножаем значение текущего элемента с аккумулятором и возвращаем результат.
Таким образом, типизация функции reduce
позволяет нам указывать правильные типы для элементов массива и аккумулятора, а также обеспечивает безопасность типов во время компиляции TypeScript.