Что такое дженерики?
Продвинутые темы
Дженерики (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>, коллекции и утилиты.