Examples

Basic usage with static methods

import { Result } from "@qlever-llc/result";

function divide(a: number, b: number): Result<number, ValidationError> {
  if (b === 0) {
    return Result.err(new ValidationError("Division by zero"));
  }
  return Result.ok(a / b);
}

const result = divide(10, 2)
  .map(x => x * 2)
  .map(x => x + 1);

const value = result.take();
if (Result.isErr(value)) return value;
console.log(value); // 11

Async operations

import { AsyncResult, Result } from "@qlever-llc/result";

const user = AsyncResult.try(async () => {
  const response = await fetch(`/api/users/123`);
  return await response.json();
});

const result = user
  .map(user => user.name)
  .map(name => name.toUpperCase());

const value = await result.take();
if (Result.isErr(value)) return value;
console.log(value); // "ALICE"

Classes

c
AsyncResult<T, E extends BaseError>(promise: Promise<Result<T, E>>)

An asynchronous Result class that represents a Promise of Result<T, E>.

c
BaseError<TData extends BaseErrorSchema = BaseErrorSchema>(
message: string,
options?: BaseErrorOptions
)

Base class for all errors used in Result<T, E>.

c
Result<T, E extends BaseError>(_value: ResultValue<T, E>)

A synchronous Result class that represents either success (Ok) or failure (Err).

c
UnexpectedError(options?: BaseErrorOptions)

Represents an unexpected error. Use this for wrapping unknown errors or for truly unexpected conditions.

Interfaces

I
ErrValue

Represents a failed result containing an error.

I
OkValue

Represents a successful result containing a value.

Type Aliases

Variables

v
T
BaseErrorSchema

Base error serialization schema. All errors serialize to this structure with optional additional fields.

v
v
UnexpectedErrorDataSchema

Schema for UnexpectedError serialization.