Typescript: Union типы на практике
Представим, что мы пишем свою реализацию “хранилища” данных, которое должно возвращать примерно такое состояние: interface State<T = unknown> {
status: 'loading' | 'error' | 'success',
error: Error | undefined,
data: T | undefined,
} На первый взгляд может показаться что всё ок, однако это не совсем так. К примеру, проверка status ничего не скажет нам о состоянии других полей: if (state.status === 'success') {
console.log(state.data.toFixed());
// Получаем ошибку
// 'state.data' is possibly 'undefined'.
} Решаем проблему через union тип, добавляя три (по количеству состояний)...