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

Result.ts overview

Extension to the effect/Result module providing optional-error recovery and flattening.

Mental model

  • Result.Result<A, E> is a synchronous, retry-free Either-like sum type with success A and failure E.
  • This module focuses on small bridges: collapse a missing-element failure into an Option, flatten nested Result’s.

Common tasks

  • Handle missing elements: optionFromOptional
  • Collapse nesting: flatten

Quickstart

Example (Collapse a NoSuchElementError into an Option)

import { Cause, Result } from "effect"
import * as MResult from "@parischap/effect-lib/MResult"

console.log(MResult.optionFromOptional(Result.succeed(1))) // Success(Some(1))
console.log(MResult.optionFromOptional(Result.fail(new Cause.NoSuchElementError())))
// Success(None)

Exports Grouped by Category


Models

Type (type alias)

Type on which this module’s functions operate.

Signature

type Type<A, E = never> = Result.Result<A, E>

Source

Utils

flatten

Flattens a nested Result<Result<R, L1>, L2> into Result<R, L1 | L2>.

Signature

declare const flatten: <R, L1, L2>(self: Type<Type<R, L1>, L2>) => Type<R, L1 | L2>

Source

optionFromOptional

Converts a Result<A, E> whose failure channel may include NoSuchElementError into a Result<Option<A>, Exclude<E, NoSuchElementError>>.

  • A NoSuchElementError failure becomes Result.succeed(Option.none()).
  • Any other failure is preserved as-is.
  • A success of A becomes Result.succeed(Option.some(a)).

Example (Distinguishing absence from real failures)

import { Cause, Result } from "effect"
import * as MResult from "@parischap/effect-lib/MResult"

console.log(MResult.optionFromOptional(Result.succeed(1))) // Success(Some(1))
console.log(MResult.optionFromOptional(Result.fail(new Cause.NoSuchElementError())))
// Success(None)
console.log(MResult.optionFromOptional(Result.fail("boom"))) // Failure('boom')

Signature

declare const optionFromOptional: <A, E>(
  self: Type<A, E>
) => Type<Option.Option<A>, Exclude<E, Cause.NoSuchElementError>>

Source