Hyperlinkv0.8.0-beta.28

Effect

Effect.transposeOptionconsteffect/Effect.ts:1857
<A = never, E = never, R = never>(self: Option<Effect<A, E, R>>): Effect<
  Option<A>,
  E,
  R
>

Converts an Option of an Effect into an Effect of an Option.

When to use

Use when an effect should run only when an optional value is present, while preserving absence as a successful None.

Details

  • None becomes an effect that succeeds with None
  • Some(effect) runs the inner effect and wraps its success value in Some
  • Inner failures are preserved in the resulting effect

Example (Transposing an Option of an Effect)

import { Effect, Option } from "effect"

const some = Option.some(Effect.succeed(42))

//      ┌─── Effect<Option<number>, never, never>
//      ▼
const program = Effect.transposeOption(some)

Effect.runPromise(program).then(console.log)
// Output: { _id: 'Option', _tag: 'Some', value: 42 }
converting
Source effect/Effect.ts:18573 lines
export const transposeOption: <A = never, E = never, R = never>(
  self: Option<Effect<A, E, R>>
) => Effect<Option<A>, E, R> = internal.transposeOption