使用复制粘贴在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}>()
);
如果工具在编译时照顾好它,那就太好了……但是,即使有一种方法可以在启动时对所有动作进行迭代并识别它们,也可以节省大量调试这些问题的时间。
答案 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
可以确保您期望的编译时错误。