Package: effect
Module: Result
Validates the success value of a Result using a predicate, failing with a
custom error if the predicate returns false.
When to use
Use to validate an already-successful Result value with a predicate or
refinement.
Details
Failure, it is returned as-isSuccess is returned unchangedorFailWith produces the error for a new FailureRefinement to narrow the success typeExample (Filtering a success value)
import { pipe, Result } from "effect"
const result = pipe(
Result.succeed(0),
Result.filterOrFail(
(n) => n > 0,
(n) => `${n} is not positive`
)
)
console.log(result)
// Output: { _tag: "Failure", failure: "0 is not positive", ... }
See
liftPredicate to create a Result from a raw value with a predicateflatMap for general conditional chainingSignature
declare const filterOrFail: { <A, B extends A, E2>(refinement: Refinement<NoInfer<A>, B>, orFailWith: (value: NoInfer<A>) => E2): <E>(self: Result<A, E>) => Result<B, E2 | E>; <A, E2>(predicate: Predicate<NoInfer<A>>, orFailWith: (value: NoInfer<A>) => E2): <E>(self: Result<A, E>) => Result<A, E2 | E>; <A, E, B extends A, E2>(self: Result<A, E>, refinement: Refinement<A, B>, orFailWith: (value: A) => E2): Result<B, E | E2>; <A, E, E2>(self: Result<A, E>, predicate: Predicate<A>, orFailWith: (value: A) => E2): Result<A, E | E2>; }
Since v4.0.0