Jako użytkownik TypeScript i redux-thunk jestem ciekawy korzyści, jakie oferuje saga redux. Chciałbym to zrobić, ale jestem zaniepokojony funkcją call
i oczywistą utratą bezpieczeństwa typu.Sny Redux, TypeScript i call?
Gdybym to zrobić:
function* invalidateReddit(): SagaIterator {
while (true) {
const {reddit} = yield take(actions.INVALIDATE_REDDIT)
yield call(fetchPosts, reddit)
}
Kompilator nie będzie mógł sprawdzić połączenia do fetchPosts
. Więc gdybym zmienił podpis nie zawiera argumentu ...
function fetchPosts() {
// anything here...
}
Funkcją invalidateReddit
, która zależy od fetchPosts
, powinny nie skompilować, ale nie będzie, bo call
ocenia mój kod dla mnie. Czy istnieje ustalony wzorzec używania tego bez poświęcania bezpieczeństwa typu?
UPDATE: PR na https://github.com/redux-saga/redux-saga/pull/740 wygląda na to, że próbuje rozwiązać ten problem. Zostawię to otwarte, dopóki nie zostanie zamknięte z rozwiązaniem.
Wygląda na to, że PR wspomniany w UPDATE nie działa. Próbowałem najnowszego kodu oddziału i jest to typ "any". To prawdopodobnie problem z samym TypeScript, ale nie wygląda na to, że pracują nad włączaniem typów niestandardowych w instrukcjach 'yield'. – Jurosh