Je reçois cette erreur en combinant mes épopées:
TS2345: Argument of type "Epic<SessionAction, GlobalState, any>" is not assignable to parameter of type "Epic<EmployeeAction, GlobalState, any>".
Type "SessionAction" is not assignable to type "EmployeeAction".
Types of property "type" are incompatible.
Type "SessionActionTypes" is not assignable to type "EmployeeActionTypes".
Voici le code:
import { combineEpics } from "redux-observable";
import { fetchUserSession } from "./sessionEpics";
import { fetchEmployee } from "./employeeEpics";
export default combineEpics(
fetchEmployee,
fetchUserSession
);
Réponses:
2 pour la réponse № 1J'ai à peu près le même problème. Il semble que tapuscrit saisisse la première épopée, en déduise que c’est le type et s’attend à ce que tout le reste soit identique.
Ce que j'ai fait a été jeté le premier.
En utilisant votre code comme exemple:
import { Observable } from "rxjs/Observable";
import { AnyAction } from "redux";
import { combineEpics } from "redux-observable";
import { fetchUserSession } from "./sessionEpics";
import { fetchEmployee } from "./employeeEpics";
export default combineEpics(
fetchEmployee as Observable<AnyAction>,
fetchUserSession
);
1 pour la réponse № 2
Ou utiliser combineEpics<any>
:
export default combineEpics<any>(
fetchEmployee,
fetchUserSession
);
0 pour la réponse № 3
Une meilleure solution pourrait utiliser les types corrects: AnyAction
et Observable
:
import { AnyAction } from "redux"
import { combineEpics, createEpicMiddleware } from "redux-observable"
import { Observable } from "rxjs"
export const clientMiddleware = createEpicMiddleware(
combineEpics<AnyAction, Observable<AnyAction>>(
authenticateEpic(request),
registerEpic(request)
))