Чтобы правильно настроить типизацию dispatch в Redux Toolkit для работы с middleware, можно использовать следующие рекомендации:
- Экспортировать типы RootState и AppDispatch напрямую из файла store.ts. 4 Это позволит автоматически обновлять типы при добавлении новых срезов состояния, сервисов API или изменении настроек middleware. 4
- Использовать методы .concat(…) и .prepend(…). 1 Они помогают избежать расширения типов массивов, которое часто происходит в TypeScript при объединении массивов с помощью оператора spread. 1
- Дать типу Dispatch другое название, например AppDispatch, чтобы избежать путаницы, так как имя типа Dispatch обычно используется слишком часто. 1
- Использовать класс Tuple. 1 Он расширяет тип массива JavaScript по умолчанию, но с модифицированными типами для методов .concat(…) и дополнительным методом .prepend(…). 1
Тип функции dispatch будет напрямую определяться из параметра middleware. 1 Поэтому, если добавить правильно типизированные middleware, dispatch уже будет правильно типизирован. 1