Какие интересные задачи решал с помощь TypeScript

«Какие интересные задачи решал с помощь TypeScript» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Одна из интересных задач — реализация строгой типизации для 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 для безопасного парсинга данных.