Итоги курса
Курс о типах и интерфейсах в TypeScript.
Что ты узнал
- Type vs Interface — когда что использовать
- Опциональные и readonly — свойства и массивы
- Расширение —
extendsи пересечение - Union —
|, сужение, дискриминатор - Intersection —
&, миксины - Discriminated unions — состояния, exhaustive check
- Type guards —
typeof,in,instanceof, пользовательские - Generics — параметры типа, ограничения,
keyof - Utility types —
Partial,Pick,Omit,Recordи другие - API — type guards и Zod
Ключевые паттерны
Discriminated unions — для состояний и вариантов. Невозможные состояния не компилируются.
Type guards — для валидации внешних данных. Функция value is Type.
Generics с keyof — для функций, работающих с любыми объектами безопасно.
Utility types — для преобразования типов без дублирования.
Zod — для сложных схем с валидацией и выводом типа.
Частые ошибки
- Использовать
asвместо type guard - Дублировать типы вместо
Pick,Omit - Забыть exhaustive check в switch
- Использовать
anyв API - Путать union и intersection
- Слишком сложные дженерики без нужды
Что дальше
- Условные типы —
T extends U ? X : Y - Mapped types — преобразование полей
- Template literal types — типы из строк
- TypeScript в React — компоненты, хуки, контекст
Полезные ссылки
- TypeScript Handbook: typescriptlang.org/docs/handbook/2/types-from-types.html
- Zod: zod.dev
- Type Challenges: github.com/type-challenges
- Total TypeScript: totaltypescript.com
Заключение
Типы и интерфейсы — сердце TypeScript. Понимание union, дискриминаторов, guard-ов и дженериков отличает новичка от опытного разработчика. Начинай с простых типов, добавляй сложность по мере необходимости. Хорошие типы описывают предметную область так, что невозможные состояния просто не компилируются.