Типы параметров 'saga' и 'saga' несовместимы - PullRequest
2 голосов
/ 04 февраля 2020

У меня следующий код:

const sagaMiddleware = createSagaMiddleware(options);
.
.
.
const createdStore = createStore(
    create(),
    state,
    someMiddleware,
  ) as someStore;

createdStore.runSaga = sagaMiddleware.run; // error here

, который прекрасно работает до обновления до последней версии redux-saga 1.1.3. Теперь я получаю следующую ошибку:

Type '<S extends Saga<any[]>>(saga: S, ...args: Parameters<S>) => Task' is not assignable to type '(saga: (() => IterableIterator<any>) | undefined, args: any) => any'.
  Types of parameters 'saga' and 'saga' are incompatible.
    Type '(() => IterableIterator<any>) | undefined' is not assignable to type 'Saga<any[]>'.
      Type 'undefined' is not assignable to type 'Saga<any[]>'.

как это можно исправить?

1 Ответ

1 голос
/ 16 февраля 2020

У меня была такая же проблема с использованием redux-boilerplate-typescript. Я закончил тем, что сделал следующее в types / index.d.ts:

import { Saga } from '@redux-saga/types';

, затем изменил

export interface InjectedStore extends Store {
  injectedReducers: any;
  injectedSagas: any;
  runSaga(
    saga: (() => IterableIterator<any>) | undefined,
    args: any | undefined,
  ): any;
}

на

export interface InjectedStore extends Store {
  injectedReducers: any;
  injectedSagas: any;
  runSaga(
    saga: Saga | (() => IterableIterator<any>) | undefined,
    args: any | undefined,
  ): any;
}
...