Проблема с отправкой "Аргумент типа '(отправка: Dispatch <T>) => Promise <void>' не может быть назначен параметру типа 'T'." - PullRequest
0 голосов
/ 06 февраля 2019

Я разрабатываю новое приложение и обнаружил ошибку.Когда я пытаюсь отправить действие, я получаю сообщение об ошибке, подобное этому:

Аргумент типа '(dispatch: Dispatch) => Promise' не может быть назначен параметру типа 'T'.Свойство 'type' отсутствует в типе '(dispatch: Dispatch) => Promise', но требуется для типа 'X'.

Кто-нибудь сталкивался с этой проблемой или может мне помочь?Я использую пакеты:

  • "реагировать": "^ 16.7.0",
  • "реагировать-дом": "^ 16.7.0",
  • "response-redux": "^ 6.0.0",
  • "Reaction-router-dom": "^ 4.3.1",
  • "redux": "^ 4.0.1",
  • " redux-thunk ":" ^ 2.3.0 ",
  • " машинопись ":" ^ 3.3.1 "

Это мой код:

 Container:

 import { connect } from 'react-redux';
 import { Dispatch } from 'react';
 import { loginUser, Actions } from './actions';
 import Screen, { Props } from './Screen';

 const mapDispatchToProps = (dispatch: Dispatch<Actions >): Props => ({
   login: (userName: string, password: string) => { 
 dispatch(loginUser(userName, password)); }
 });

 export const ScreenContainer = connect(mapDispatchToProps)(Screen);

 Props:

 export interface Props {
  login: (userName: string, password: string) => void;
 }


Actions:

import { Dispatch } from 'redux';

export type Actions =
  LoginRequest
  | LoginSuccess
  | LoginFailure;

  export const loginRequest = (): LoginRequest => ({
    type: types.LOGIN_REQUEST,
  });

  export const loginFailure = (): LoginFailure => ({
    type: types.LOGIN_REQUEST_FAILED,
  });

  export const loginSuccess = (): LoginSuccess=> ({
    type: types.LOGIN_REQUEST_SUCCESS,
  });

  export interface LoginRequest {
    type: types.LOGIN_REQUEST;
  }

  export interface LoginFailure {
    type: types.LOGIN_REQUEST_FAILED;
  }

 export interface LoginSuccess{
    type: types.LOGIN_REQUEST_SUCCESS;
  }

export const loginUser = (email: string, password: string) => async 
 (dispatch: Dispatch<Actions>) => {
      dispatch(loginRequest());
      try {
        dispatch(loginSuccess());
      } catch (error) {
        dispatch(loginFailure());
      }
  };
...