Как ограничить Generic в TypeScript?
Дженерики
Дженерик ограничивают через `extends`: тип-параметр должен быть совместим с указанным типом.
function getLength<T extends { length: number }>(value: T): number {
return value.length;
}
getLength('hello'); // ок
getLength([1, 2, 3]); // ок
getLength(42); // ошибка: у number нет lengthОграничение через keyof
function getProp<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
getProp({ name: 'Анна', age: 30 }, 'name'); // string
getProp({ name: 'Анна' }, 'email'); // ошибкаЗначение по умолчанию
interface ApiResponse<T = unknown> {
data: T;
}Зачем
Ограничение даёт доступ к нужным свойствам внутри функции и не пускает неподходящие типы снаружи.
Коротко для собеседования
T extends Something задаёт требование к типу; часто используют K extends keyof T для безопасного доступа к свойствам.
Подробнее: TypeScript Handbook — Generic Constraints