如何检测NgRx createAction重复类型

时间:2019-12-21 16:14:26

标签: angular ngrx

使用复制粘贴在NgRx中添加新动作时,有时可能会忘记更改为纯字符串的动作类型。当然,将其设置为静态static var使其可能性较小,但仍然可以实现。

您如何检测这种疏忽?它会导致怪异的bug,这些bug在运行时很难被跟踪,并且似乎在编译时更容易避免。

例如,这些将在运行时导致问题,在编译时没有任何警告

export const meeting_user_doc = createAction(
  '[User] selected doc',
  props<{docGuid: string}>()
);

export const meeting_user_image = createAction(
  '[User] selected doc',
  props<{imageGuid: string}>()
);

如果工具在编译时照顾好它,那就太好了……但是,即使有一种方法可以在启动时对所有动作进行迭代并识别它们,也可以节省大量调试这些问题的时间。

2 个答案:

答案 0 :(得分:1)

我的软件包[ngrx-tslint-rules(https://github.com/timdeschryver/ngrx-tslint-rules#readme)包含覆盖重复操作类型的规则-请参见example

答案 1 :(得分:0)

确实,一开始很难发现这些错误,但是既然这已经发生在您身上,那么您肯定会在再次发生这种情况的一小部分时间内就将其找出来……毕竟这两个动作都将执行。

如果您确实确实需要以不同的方式进行操作,请尝试将字符串作为List<Node> edges = graph.edges() .filter(edge -> edge.getNode1() == graph.getNode(ip2)) .map(edge -> edge.getNode()) .collect(Collectors.toList()); 值(并将其导入每个使用它的文件中)。但是,这将添加另一个要维护的文件,我认为这太过分了。

具有enum可以确保您期望的编译时错误。

Typescript enum docs