Что такое дженерики в 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']); // stringT — параметр типа, 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 ограничивает допустимые типы, а вывод типов избавляет от явных указаний.