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