выпуск саги и машинописный выпуск - PullRequest
0 голосов
/ 17 января 2020

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

// foo.JS
export function *fooSagas() {
  yield all([
    takeEvery("FOO_A", fooASaga),
    takeEvery("FOO_B", fooBSaga),
  ]);
}

, но когда я пытаюсь сделать это в файле машинописи, я получаю следующее:

// foo.TS
export function *fooSagas() {
  yield all([
    takeEvery("FOO_A", fooASaga),
    /* 
      all subsequent calls throw this typescript error: 
      The last overload gave the following error.
      Argument of type 'string' is not assignable to parameter of type 'TakeableChannel<unknown>
      effects.d.ts(291, 17): The last overload is declared here.
    */
    takeEvery("FOO_B", fooBSaga),
  ]);
}

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

лучший ответ вы можете найти здесь https://github.com/redux-saga/redux-saga/issues/1883 в комментарии от chenghw от 9 июля 2019.

В генераторе вы в настоящее время объявляете действие как { payload: ICredential } без типа. Если вы объявите тип, я думаю, вы избавитесь от этой ошибки ... так что-то вроде этого ... { type: typeof types.USER_LOGIN_REQUEST; payload: ICredential; }

0 голосов
/ 17 января 2020

публикация, так что я надеюсь сэкономить чужое время ... видимо, это просто вырвет машинопись.

добавлено // @ ts-ignore перед каждой строкой, и все работает

    yield all ([
      // @ts-ignore      
      takeLatest(ACT.todo.saga.create, create),
      // @ts-ignore      
      takeLatest(ACT.todo.saga.retrieve, retrieve),
      // @ts-ignore      
      takeLatest(ACT.todo.saga.update,update),
      // @ts-ignore      
      takeLatest(ACT.todo.saga.delete,del),
      // @ts-ignore      
      takeLatest(ACT.todo.saga.list, list)     
    ])
...