Hyperlinkv0.8.0-beta.28

Result

Result.transposeOptionconsteffect/Result.ts:1789
<A = never, E = never>(self: Option<Result<A, E>>): Result<Option<A>, E>

Transforms Option<Result<A, E>> into Result<Option<A>, E>.

When to use

Use when optional absence should be treated as a successful None, while an inner Result failure should still fail the whole result.

Details

  • None becomes Success(None)
  • Some(Success(a)) becomes Success(Some(a))
  • Some(Failure(e)) becomes Failure(e)

Example (Transposing an Option of a Result)

import { Option, Result } from "effect"

const some = Option.some(Result.succeed(42))
console.log(Result.transposeOption(some))
// Output: { _tag: "Success", success: { _tag: "Some", value: 42 }, ... }

const none = Option.none<Result.Result<number, string>>()
console.log(Result.transposeOption(none))
// Output: { _tag: "Success", success: { _tag: "None" }, ... }
Source effect/Result.ts:17895 lines
export const transposeOption = <A = never, E = never>(
  self: Option<Result<A, E>>
): Result<Option<A>, E> => {
  return option_.isNone(self) ? succeedNone : map(self.value, option_.some)
}