Стрелочные функции стали неотъемлемой частью современного программирования на JavaScript, предлагая краткий синтаксис и лексическую область видимости. При работе со стрелочными функциями понимание того, как использовать дженерики, может значительно повысить гибкость и возможность повторного использования вашего кода. В этой статье мы рассмотрим различные методы использования дженериков в стрелочных функциях, сопровождаемые примерами кода.
- Общая стрелочная функция с выводом типа:
const identity = <T>(value: T): T => value;
const result = identity("Hello, world!"); // Type inference infers the return type as string
console.log(result); // Output: Hello, world!
В этом примере стрелочная функция identity
использует параметр универсального типа T
, чтобы указать, что любой тип может быть передан в качестве аргумента и возвращен как результат.
- Функция стрелки с преобразованием общего массива:
const mapArray = <T, U>(array: T[], mapper: (item: T) => U): U[] => {
return array.map(mapper);
};
const numbers = [1, 2, 3, 4, 5];
const doubled = mapArray(numbers, (num) => num * 2);
console.log(doubled); // Output: [2, 4, 6, 8, 10]
Здесь функция mapArray
принимает массив типа T
и функцию сопоставления, которая преобразует каждый элемент массива в новый тип U
. Стрелочная функция mapper
принимает элемент типа T
и возвращает значение типа U
.
- Условные обобщения в стрелочных функциях:
const filterArray = <T, U extends T>(
array: T[],
predicate: (item: T) => item is U
): U[] => {
return array.filter(predicate);
};
const mixedArray: (number | string)[] = [1, "two", 3, "four", 5];
const numbersOnly = filterArray(mixedArray, (item): item is number => typeof item === "number");
console.log(numbersOnly); // Output: [1, 3, 5]
В этом примере стрелочная функция filterArray
использует условные дженерики для фильтрации массива на основе предиката типа. Параметр типа U
расширяет T
, гарантируя, что отфильтрованный массив будет содержать только элементы, удовлетворяющие предикату.
Обобщенные функции в стрелочных функциях предоставляют мощный инструмент для написания гибкого и многократно используемого кода на JavaScript. Используя дженерики, вы можете повысить безопасность типов, включить вывод типов и создать функции, которые беспрепятственно работают с различными типами данных. В этой статье мы рассмотрели различные методы использования дженериков в стрелочных функциях, а также примеры кода. Включив эти методы в свои проекты JavaScript, вы сможете раскрыть весь потенциал стрелочных функций и повысить удобство сопровождения своей базы кода.