Как пользователь TypeScript и redux-thunk, мне интересно узнать о преимуществах, предлагаемых компанией redux-saga. Я хотел бы сделать снимок, но меня беспокоит функция call
и очевидная потеря безопасности типа.Redux Sagas, TypeScript и вызов?
Если я это сделать:
function* invalidateReddit(): SagaIterator {
while (true) {
const {reddit} = yield take(actions.INVALIDATE_REDDIT)
yield call(fetchPosts, reddit)
}
компилятор не сможет проверить вызовы fetchPosts
. Так что, если я изменил подпись не включать аргумент ...
function fetchPosts() {
// anything here...
}
invalidateReddit
функция, которая зависит от fetchPosts
, должен не компилировать, но это не потому, что call
оценивает мой код для меня. Существует ли установленная схема для использования этого без ущерба для безопасности типа?
ОБНОВЛЕНИЕ: PR в https://github.com/redux-saga/redux-saga/pull/740 выглядит как попытка решить эту проблему. Я оставлю это открытым до тех пор, пока оно не будет закрыто решением.
Кажется, что PR, упомянутый в UPDATE, не работает. Я пробовал последний код в ветке, и это «любой» тип. Вероятно, это проблема с самим TypeScript, но не похоже, что они работают над включением пользовательских типов в операторы 'yield'. – Jurosh