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