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));
  }