Я использую 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
Я хочу внутренне validations
будет реализовано в единицах fp-ts Validation
. Я следую примеру, но для этого требуется знать список Validator
статически, когда я хочу создать этот список динамически.
Обратите внимание, что для простоты я использую тип Validation для NonEmptyArray ошибок, поскольку меня в основном интересует, как объединить проверки из динамически созданного массива.
Наконец, если список проверок пуст, мы можем предположить, что введенные данные действительны.
Как я могу реализовать validations
с помощью комбинаторов, предоставленных getValidation
из fp-ts