Apricot Avatar

Compact Typescript utility

Download

A quick typescript snippet I reach for often.

result.ts typescript

Lightweight Result discriminated union.

export type Result<T, E = Error> =
  | { ok: true; value: T }
  | { ok: false; error: E };

export const ok = <T>(value: T): Result<T, never> => ({ ok: true, value });
export const err = <E>(error: E): Result<never, E> => ({ ok: false, error });

export function unwrap<T, E>(r: Result<T, E>): T {
  if (!r.ok) throw r.error;
  return r.value;
}

Open to suggestions — fork it if you can do better.

Developer Discussions