Модуль 13 · Урок 50
Object types, unions і narrowing
TypeScript structural model описує required/optional/readonly shape. Union дозволяє кілька можливих states, а control-flow narrowing доводить, який variant доступний у конкретній branch.
Domain states замість Boolean soup
type LoadState =
| { status: 'idle' }
| { status: 'loading' }
| { status: 'success'; books: readonly Book[] }
| { status: 'error'; message: string };Literal discriminant звужує state. Exhaustive never check сигналізує при новому variant. Type alias може назвати union або object; interface зручний для extendable object contract. Compatibility structural: однаковий shape сумісний незалежно від назви.
Narrowing і absence
Optional property читається як value або undefined; перевірте absence до use. ?. і ?? скорочують код після domain decision. as assertion не перевіряє runtime value, non-null ! переносить ризик на автора.
Практика
Заповніть narrowing cases і додайте новий state variant: strict check має змусити оновити exhaustive switch. Не замінюйте fix double assertion.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.