Освоение дженериков в стрелочных функциях: подробное руководство с примерами кода

Стрелочные функции стали неотъемлемой частью современного программирования на JavaScript, предлагая краткий синтаксис и лексическую область видимости. При работе со стрелочными функциями понимание того, как использовать дженерики, может значительно повысить гибкость и возможность повторного использования вашего кода. В этой статье мы рассмотрим различные методы использования дженериков в стрелочных функциях, сопровождаемые примерами кода.

  1. Общая стрелочная функция с выводом типа:
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, чтобы указать, что любой тип может быть передан в качестве аргумента и возвращен как результат.

  1. Функция стрелки с преобразованием общего массива:
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.

  1. Условные обобщения в стрелочных функциях:
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, вы сможете раскрыть весь потенциал стрелочных функций и повысить удобство сопровождения своей базы кода.