@stepan132

Как типизировать dispatch функции?

Возникла проблема с typescript и диспатчем функции, я не знаю какой тип нужно применить. Вот код экшена, в котором возникает ошибка:
import { Dispatch } from 'redux'
import { db } from '../../index'

import loadPatternsCreator from './actionCreator'
import loadPatternsActionType from './actionType'

import setError from '../setError'
import setErrorActionType from '../setError/actionType'

const loadPatterns = (term: string) => (dispatch: Dispatch<loadPatternsActionType | setErrorActionType>) => {
  try {
    dispatch(loadPatternsCreator([{}])) // эта функция сразу возвращает объект
  } catch (e) {
    dispatch(setError(e.message)) // здесь возникает ошибка, т.к. setError возвращает функцию
  }
}

export default loadPatterns

вот код экшена setError:
import { Dispatch } from 'redux'
import setErrorActionType from './actionType'
import setErrorCreator from './actionCreator'

const setError = (msg: string) => (dispatch: Dispatch<setErrorActionType>) => {
  dispatch(setErrorCreator(msg))
}

export default setError

Какой тип нужно применить? Заранее спасибо за ответ.
  • Вопрос задан
  • 1204 просмотра
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
сделайте вот так: setError(e.message)(dispatch) вместо
dispatch(setError(e.message)) // здесь возникает ошибка, т.к. setError возвращает функцию
и все будет правильно сразу
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы