Итоги курса
Курс о дженериках в TypeScript.
Что ты узнал
- Что такое дженерики — параметры типа,
<T> - Дженерик-функции — вывод, несколько параметров
- Ограничения —
extends,keyof - keyof и typeof — ключи и типы значений
- Дженерик-типы —
type,interface, дефолты - Дженерик-классы — коллекции, репозитории
- Условные типы —
T extends U ? X : Y - Mapped types —
[K in keyof T] - infer — извлечение типа
- Продвинутые утилиты —
DeepPartial,RequiresAtLeastOne,Brand - Практика —
pick,omit,groupBy
Ключевые идеи
Параметр типа — placeholder для типа. Работает с чем угодно.
Ограничение extends — сужает возможные типы, даёт безопасность.
keyof + T[K] — доступ к значениям по ключу с проверкой.
Условные типы + infer — разбор типов на части.
Mapped types — преобразование всех ключей по шаблону.
Глубокие утилиты — рекурсивные дженерики для вложенных структур.
Частые ошибки
- Использовать
anyвместо дженерика - Слишком сложные типы без нужды
- Забыть ограничение
extends, когда нужно - Не понимать распространение на union
- Путать
inferиextends - Строить типы, которые невозможно реализовать в рантайме
Когда использовать
Дженерик — когда одна реализация для разных типов с сохранением типа.
extends — когда нужен доступ к полям параметра.
keyof — когда работаешь с ключами объекта.
Условный тип — когда результат зависит от входного типа.
Mapped type — когда преобразуешь все ключи.
infer — когда извлекаешь часть типа.
Что дальше
- Template literal types — типы из строк
- Variadic tuples — операции над кортежами
- TypeScript в библиотеках — декларации
.d.ts - Написание своих утилит
Полезные ссылки
- TypeScript Handbook: typescriptlang.org/docs/handbook/2/generics.html
- Type Challenges: github.com/type-challenges
- Type-Level TypeScript: type-level-typescript.com
- Total TypeScript: totaltypescript.com
Заключение
Дженерики — продвинутая тема. Их не нужно использовать везде: часто хватает конкретных типов и union. Но когда нужна переиспользуемая безопасность — дженерики незаменимы. Начинай с простых случаев: first<T>, Box<T>. Усложняй только когда видишь повторяющийся паттерн. Хороший дженерик описывает намерение, а не показывает мастерство.