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

Как ограничить 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

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