如何在打字稿中将NGRX动作作为参数传递给函数?

时间:2019-09-16 09:33:11

标签: typescript rxjs angular7 ngrx

我的Angular 7应用程序中有其他条件,我在其中使用状态管理器和rxjs,并且希望使代码更具可读性。在不同的条件下,我需要调度不同的动作。我决定通过将某些部分移至可重用功能来减少代码块,并需要将NGRX操作作为参数传递给这些功能。但是打字稿会引发错误:参数“ xxx”隐式具有“ any”类型。

问题是-我应该为动作定义哪种类型?正如setSomeDataAction:操作-不起作用

现在输入代码:

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

引发打字错误的代码

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

我正在尝试类似的事情:

private dispatchRemoveOne(newVisitorAction: Action, existingVisitorAction: Action, payload: Payload[]) {
    newVisitor
      ? this.store.dispatch(newVisitorAction(payload))
      : this.store.dispatch(existingVisitorAction(payload));
  }

0 个答案:

没有答案