Ответ
Одна из интересных задач — реализация строгой типизации для Redux-стора. TypeScript позволяет избежать ошибок в экшенах и редьюсерах. Например, с помощью discriminated unions можно гарантировать, что редьюсер обрабатывает только корректные экшены:
type Action =
| { type: 'ADD_TODO'; payload: string }
| { type: 'TOGGLE_TODO'; id: number };
function todosReducer(state: Todo[], action: Action): Todo[] {
switch (action.type) {
case 'ADD_TODO': // Ошибка TS: такого типа нет в Action
return [...state, { text: action.payload, completed: false }];
case 'TOGGLE_TODO': // Ошибка TS
return state.map(todo => todo.id === action.id ? {...todo, completed: !todo.completed} : todo);
default:
return state;
}
}
Также работал с динамической типизацией API-ответов, используя дженерики и type guards для безопасного парсинга данных.