/ / combineEpics en utilisant TypeScript donne le type error - typescript, rxjs, redux-observable

combineEpics en utilisant TypeScript donne le type d'erreur - typescript, rxjs, redux-observable

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 № 1

J'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)
))