我正在使用fp-ts来处理我的应用程序中的验证。我想编写一个函数,该函数接受验证器列表,并在单个输入上运行所有验证器。
这些是我要使用的类型:
import { Either } from "fp-ts/lib/Either";
import { NonEmptyArray } from "fp-ts/lib/NonEmptyArray";
type Validation<E, A> = Either<NonEmptyArray<E>, A>;
type Validator<E, A> = (a: A) => Validation<E, A>;
declare function validations<E, A>(vs: Validator<E, A>[], a: A): Validation
在内部,我希望根据fp-ts Validation
实现validations
。我正在跟踪该示例,但是当我想动态生成该列表时,它需要静态地知道Validator
的列表。
请注意,为简单起见,我使Validation类型带有一个NonEmptyArray错误,因为我主要对如何组合来自动态构造的数组的验证感兴趣。
最后,如果验证列表为空,则可以假定输入有效。
如何使用validations
中getValidation
提供的组合器来实现fp-ts