rxjs - Hur man skickar NGRX-åtgärder till funktioner som dess parametrar i TypeScript?
Jag har en något stor if-else-sats i min Angular 7-applikation, där jag använder State manager och rxjs, och vill göra koden lite mer läsbar. I olika villkor behöver jag skicka olika actions. Jag bestämde mig för att minska if-else-kodblocket genom att flytta vissa delar till en återanvändbar funktion, och behöver skicka NGRX-actions till dessa funktioner som parametrar. Men TypeScript ger ett fel: Parameter 'xxx' har implicit typen 'any'.
Frågan är - vilken typ ska jag definiera för actions? Eftersom setSomeDataAction: Action inte fungerar
Koda nu:
if (mobile) {
if (newVisitor) {
this.store.dispatch(SetMobileForNewVisitor(payload));
} else {
this.store.dispatch(SetMobileForExistingVisitor(payload));
}
} else {
if (newVisitor) {
this.store.dispatch(SetNotMobileForNewVisitor(payload));
} else {
this.store.dispatch(SetNotMobileForExistingVisitor(payload));
}
}
Kod som kastar typescript-fel
mobile ?
this.dispatchRemoveOne(SetMobileForNewVisitor, SetMobileForExistingVisitor, payload) :
this.dispatchRemoveOne(SetNotMobileForNewVisitor,SetNotMobileForExistingVisitor, payload);
private dispatchRemoveOne(newVisitorAction, existingVisitorAction, payload) {
newVisitor
? this.store.dispatch(newVisitorAction(payload))
: this.store.dispatch(existingVisitorAction(payload));
}
Jag försökte något i stil med:
private dispatchRemoveOne(newVisitorAction: Action, existingVisitorAction: Action, payload: Payload[]) {
newVisitor
? this.store.dispatch(newVisitorAction(payload))
: this.store.dispatch(existingVisitorAction(payload));
}