Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про TypeScript: TypeScript, generic, function, type safety, type parameter

Как типизировать функцию через generic?

Вопрос проверяет понимание дженериков в TypeScript для создания типобезопасных функций, работающих с разными типами данных.

Короткий ответ

Дженерик (generic) позволяет создать функцию, которая работает с разными типами, сохраняя типизацию. Тип указывается в угловых скобках перед параметрами. При вызове TypeScript автоматически выводит конкретный тип. Это избавляет от дублирования кода и делает функции гибкими.

Длинный ответ

Что такое дженерик в функции?

Дженерик (обобщение) — это механизм TypeScript, который позволяет создавать компоненты, работающие с различными типами, не теряя информацию о типе. Вместо того чтобы писать отдельные функции для каждого типа, вы используете параметр типа, который подставляется при вызове.

Синтаксис

Тип-параметр объявляется в угловых скобках <T> перед списком параметров функции. Обычно используют букву T (от Type), но можно любое имя.

function identity<T>(arg: T): T {
  return arg;
}

const num = identity(42);      // T = number
const str = identity('hello'); // T = string

Как это работает?

При вызове функции TypeScript анализирует переданный аргумент и автоматически выводит конкретный тип для T. В примере выше num будет иметь тип number, а str — string. Если нужно явно указать тип, можно написать identity<number>(42).

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

function firstElement<T>(arr: T[]): T | undefined {
  return arr[0];
}

const firstNum = firstElement([1, 2, 3]);      // number | undefined
const firstStr = firstElement(['a', 'b']);     // string | undefined

Здесь T[] означает массив элементов типа T. Функция возвращает первый элемент или undefined, сохраняя тип.

Ограничения дженериков

Иногда нужно наложить ограничение на тип, чтобы использовать определённые свойства. Для этого применяется ключевое слово extends:

function getLength<T extends { length: number }>(arg: T): number {
  return arg.length;
}

getLength('hello'); // 5
getLength([1, 2]);  // 2
getLength(42);      // Ошибка: number не имеет length

Теперь T может быть только типом, у которого есть свойство length.

Вывод

Дженерики делают функции универсальными и типобезопасными. Их стоит применять везде, где функция должна работать с разными типами, но при этом сохранять строгую типизацию — например, в утилитах для работы с массивами, промисами или HTTP-запросами.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • TypeScript

    TypeScript

Ключевые слова

#TypeScript

#generic

#function

#type safety

#type parameter

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию