import { ThunkAction } from '.../redux-thunk-promise'; import { AppState } from 'store/'; import { FETCH, FetchAction } from './types'; export const fetchFoo = (): ThunkAction => (dispatch, getState) => { if (...) { dispatch({ type: FETCH, payload: api.list(), // `api.list` is `() => Promise` }).then(({ value }) => { // value is ApiResult }); } };