【发布时间】:2019-08-29 17:39:05
【问题描述】:
我的程序有一个检查许多条件的地方。
与编写大型 if(conditionOne || conditionTwo || ...) 类型的表达式相反,我决定定义一个过滤器数组,如下所示:
const filters: Array<(err: MyError) => boolean> = [
(e: MyError) => e.checkSomething(),
(e: MyError) => e.checkSomethingElse,
(e: MyError) => e.checkSomethingYetAgain()
];
然后我像这样遍历它:
for (const key in filters) {
if (filters[key](err)) {
return true;
}
}
return false;
我觉得有一种更实用的方式来表达这一点(因为现在,在我看来,这看起来太必要了),但我不确定它看起来如何。 谢谢!
【问题讨论】:
-
“更好”怎么样?我们需要一种客观的方法来衡量答案,否则问题将被“主要基于意见”而结束。
-
我正在寻找一种更实用的方式来表达这个想法,因为我所描述的方式看起来非常必要。
-
例如,使用
reduce是“更好”还是“更实用”? -
我会说使用
reduce对我来说确实很实用,但是,我不确定如何编写它,因为在我的函数数组上调用reduce会返回一个函数,但是不是一个值。 -
调用reduce会返回你希望它返回的任何东西,即你分配给累加器的东西。我鼓励你read the linked article in its entirety。
标签: arrays typescript function loops functional-programming