PassFront
  1. PassFront
  2. База знаний
  3. Дженерики

Что такое дженерики в TypeScript и зачем они нужны?

Дженерики

Дженерики — типы с параметрами: функция или структура работает с разными типами и при этом сохраняет информацию о них.

Проблема без них

function first(arr: any[]): any {
  return arr[0]; // потеряли тип: результат any
}

С дженериком

function first<T>(arr: T[]): T {
  return arr[0];
}

const n = first([1, 2, 3]);      // number
const s = first(['a', 'b']);     // string

T — параметр типа, TypeScript выводит его из аргументов.

Ограничения параметра

function getLength<T extends { length: number }>(value: T): number {
  return value.length;
}
getLength('abc');    // 3
getLength([1, 2]);   // 2

Где встречаются

Array<T>, Promise<T>, Record<K, V>, хуки (useState<User | null>(null)), универсальные компоненты и API-клиенты.

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

Дженерик связывает входной и выходной типы. extends ограничивает допустимые типы, а вывод типов избавляет от явных указаний.

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