Types, Interfaces & Narrowing
Primitive and object types, unions, literal types, type guards, and discriminated unions for UI state.
You're done when
- You model loading/success/error state as a discriminated union instead of three booleans.
- You never reach for 'any' to silence an error.