PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Что такое дженерики?

Продвинутые темы

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

Проблема, которую решают

Без дженериков — либо дублировать код под каждый тип, либо использовать any и терять проверки:

function first<T>(arr: T[]): T {
  return arr[0];
}
first([1, 2, 3]);    // T = number
first(['a', 'b']);   // T = string

Тип T подставляется при вызове и сохраняется в результате.

Где применяют

  • Функции: identity<T>(x: T): T.
  • Интерфейсы/типы: Array<T>, Promise<T>, Record<K, V>.
  • Классы: контейнеры, коллекции.

Ограничения (constraints)

function getId<T extends { id: number }>(item: T): number {
  return item.id;
}

extends сужает допустимые типы, давая доступ к их свойствам.

Параметры по умолчанию и несколько типов

interface Response<T = unknown> { data: T; }
function pair<A, B>(a: A, b: B): [A, B] { return [a, b]; }

Коротко для собеседования

Дженерики — параметры типа (<T>) для переиспользуемого типобезопасного кода без any. Тип подставляется при вызове; extends задаёт ограничения. На них построены Array<T>, Promise<T>, Record<K,V>, коллекции и утилиты.

Другие вопросы раздела