Патерни проєктування · Middle · Запитання 8 з 75
Чому набір прапорців isLoading, isError, isSuccess гірший за явний стан?
type State =
| { status: "idle" }
| { status: "loading" }
| { status: "success"; data: User }
| { status: "error"; error: string };- ✓Правильна відповідь: Прапорці допускають неможливі комбінації, а явний стан - лише коректні
- 2Прапорці займають більше пам'яті, ніж одне рядкове поле
status - 3TypeScript не вміє типізувати кілька булевих полів одночасно
Пояснення
Три булеві прапорці дають 8 комбінацій, включно з безглуздими «завантажується й помилка одночасно». Дискримінований union - по суті патерн «Стан» / скінченний автомат: переходи явні, а data доступна лише в success.