Skip to main content Link Search Menu Expand Document (external link)

ResultX overview

Generic, framework-agnostic extensions to Effect’s Result module.

Added in v0.0.0


Table of contents


conversions

fromOption

Lifts an Option into a Result with a void failure: Some(value) becomes Result.succeed(value) and None becomes Result.failVoid.

Useful in v4 where Array.filterMap and Record.filterMap expect Result-returning predicates (a Success keeps the value, a Failure drops it); in v3 those APIs accepted Option-returning predicates directly:

import { Array } from "effect"
import { ResultX } from "@nunofyobiz/effect-extras"

declare const items: ReadonlyArray<number>
declare const maybeTransform: (item: number) => import("effect").Option.Option<string>

// v3: Array.filterMap(items, (item) => maybeTransform(item))
// v4:
Array.filterMap(items, (item) => ResultX.fromOption(maybeTransform(item)))

Effect ships Result.fromOption(option, onNone) which requires a non-void failure value; this helper specializes to the common “drop the item, no error needed” case used by filterMap.

Signature

export declare const fromOption: <A>(option: Option.Option<A>) => Result.Result<A, void>

Example

import { Option, Result } from "effect"
import { ResultX } from "@nunofyobiz/effect-extras"

assert.deepStrictEqual(ResultX.fromOption(Option.some(1)), Result.succeed(1))
assert.deepStrictEqual(ResultX.fromOption(Option.none<number>()), Result.failVoid)

Added in v0.0.0