Arrays 函数遍历问题的Typescript数组

Arrays 函数遍历问题的Typescript数组,arrays,typescript,function,loops,functional-programming,Arrays,Typescript,Function,Loops,Functional Programming,我的程序有一个可以检查许多条件的地方 与编写大型if(conditionOne | | | conditionTwo | | |…)类型的表达式不同,我决定定义一个过滤器数组,如下所示: const filters: Array<(err: MyError) => boolean> = [ (e: MyError) => e.checkSomething(), (e: MyError) => e.checkSomethingElse,

我的程序有一个可以检查许多条件的地方

与编写大型
if(conditionOne | | | conditionTwo | | |…)
类型的表达式不同,我决定定义一个过滤器数组,如下所示:

const filters: Array<(err: MyError) => boolean> = [
      (e: MyError) => e.checkSomething(),
      (e: MyError) => e.checkSomethingElse,
      (e: MyError) => e.checkSomethingYetAgain()
    ];
我觉得有一种更实用的方式来表达这一点(因为现在,在我看来,这看起来太迫切了),但我不确定它看起来如何。 谢谢

可能与:

函数makeErrorFilter(过滤器:数组布尔值>){
return(err:MyError)=>!!filters.find(filter=>filter(err));
}
常量errorFilter=makeErrorFilter([
(e:MyError)=>e.checkSomething(),
(e:MyError)=>e.checkSomethingElse,
(e:MyError)=>e.checkSomethingYetAgain()
]);

“更好”如何?我们需要一种客观的方法来衡量答案,否则这个问题将以“主要基于意见”的方式结束。我想要的是一种更实用的方式来表达这个想法,因为我所描述的方式看起来非常必要。例如,它是“更好”还是“更实用”使用?我想说使用
reduce
在我看来确实是功能性的,但是,我不确定如何准确地编写它,因为在我的函数数组上调用
reduce
会返回一个函数,而不是一个值。调用reduce会返回您希望它返回的任何内容,即分配给累加器的内容。我鼓励你这样做。
for (const key in filters) {
      if (filters[key](err)) {
        return true;
      }
    }
return false;
function makeErrorFilter(filters: Array<(err: MyError) => boolean>) {
  return (err: MyError) => !!filters.find(filter => filter(err));
}

const errorFilter = makeErrorFilter([
  (e: MyError) => e.checkSomething(),
  (e: MyError) => e.checkSomethingElse,
  (e: MyError) => e.checkSomethingYetAgain()
]);