typed-utilities
Version:
Strongly typed general purpose utilities
35 lines (34 loc) • 1.62 kB
TypeScript
import { Left, Right } from "./Either";
export declare type Ok<Value = unknown> = Left<Value>;
export declare type Err<Error = unknown> = Right<Error>;
export declare type Result<Value = unknown, Error = unknown> = Ok<Value> | Err<Error>;
declare function isOk<Value = unknown>(result: Result<Value, unknown>): result is Ok<Value>;
declare function assertOk<Value = unknown>(result: Result<Value, unknown>, message?: string): asserts result is Ok<Value>;
declare function isErr<Error = unknown>(result: Result<unknown, Error>): result is Err<Error>;
declare function assertErr<Error = unknown>(result: Result<unknown, Error>, message?: string): asserts result is Err<Error>;
declare type Match<IfOk, IfErr, Value = unknown, Error = unknown> = {
readonly ok: (value: Value) => IfOk;
readonly err: (error: Error) => IfErr;
};
export declare const Result: {
is: {
ok: typeof isOk;
err: typeof isErr;
};
assert: {
ok: typeof assertOk;
err: typeof assertErr;
};
of: {
ok: <Value = unknown>(value: Value) => Ok<Value>;
err: <Error_1 = unknown>(error: Error_1) => Err<unknown>;
};
to: {
okValue: <Value_1 = unknown>(result: Ok<Value_1>) => Value_1;
errError: <Error_2 = unknown>(result: Err<Error_2>) => Error_2;
};
match: <IfOk, IfErr, Value_2 = unknown, Error_3 = unknown>(result: Result<Value_2, Error_3>, match: Match<IfOk, IfErr, Value_2, Error_3>) => IfOk | IfErr;
tryCatch: <T>(fn: () => T) => Result<T, unknown>;
tryCatchAsync: <T_1>(fn: () => Promise<T_1>) => Promise<Result<T_1, unknown>>;
};
export {};