Als TypScript- und Redux-Thunk-Benutzer bin ich neugierig auf die Vorteile von redux-saga. Ich möchte es eine Chance geben, bin aber besorgt über die call
Funktion und den scheinbaren Verlust der Typsicherheit.Redux Sagas, TypeScript und Anruf?
Wenn ich dies tun:
function* invalidateReddit(): SagaIterator {
while (true) {
const {reddit} = yield take(actions.INVALIDATE_REDDIT)
yield call(fetchPosts, reddit)
}
Der Compiler wird nicht möglich sein, Anrufe zu fetchPosts
zu überprüfen. Also, wenn ich die Unterschrift nicht verändert, das Argument zu schließen ...
function fetchPosts() {
// anything here...
}
Die invalidateReddit
-Funktion, die auf fetchPosts
abhängt, sollte nicht kompiliert, aber es wird nicht, weil call
wertet meinen Code für mich. Gibt es ein etabliertes Muster für den Einsatz ohne Verzicht auf die Typensicherheit?
UPDATE: Die PR bei https://github.com/redux-saga/redux-saga/pull/740 sieht aus wie es versucht, dieses Problem zu lösen. Ich werde das offen lassen, bis es mit einer Lösung geschlossen werden kann.
Scheint wie PR erwähnt in UPDATE funktioniert nicht. Ich habe den letzten Code für den Zweig ausprobiert und es ist 'jeder' Typ. Es ist wahrscheinlich ein Problem mit TypeScript selbst, sieht aber nicht so aus, als würden sie benutzerdefinierte Typen in yield-Anweisungen aktivieren. – Jurosh