method Result.prototype.take
Result.prototype.take(): [T] extends [never] ? Result<never, E> : T | Result<never, E>

Extracts the value from Ok or returns the Err for early returns.

This is the equivalent of Rust's ? operator. Use it with isErr() for early returns in functions that return Results.

Returns either:

  • The unwrapped value T if this result is Ok
  • An Err Result<never, E> if this result is Err (can be directly returned)

Examples

Example 1

function processData(input: string): Result<number, ValidationError> {
  const parsed = parseInput(input).take();
  if (isErr(parsed)) return parsed;

  const validated = validate(parsed).take();
  if (isErr(validated)) return validated;

  return Result.ok(validated * 2);
}

Return Type

[T] extends [never] ? Result<never, E> : T | Result<never, E>

The unwrapped value or Err Result

Usage

import { Result } from "result/mod.ts";