do-try-tuple
Version:
Catches errors and rejected promises, returns tuple
21 lines (20 loc) • 1.01 kB
TypeScript
export type Failure<E = unknown> = readonly [ok: false, error: E, undefined];
export type Success<T> = readonly [ok: true, error: undefined, value: T];
export type ErrValueTuple<T, E = unknown> = Failure<E> | Success<T>;
/** @since 3.0.0 */
export declare const success: <T>(value: T) => Success<T>;
/** @since 3.0.0 */
export declare const failure: <E>(err: E) => Failure<E>;
export declare const safe: {
(promise: Promise<never>): Promise<readonly [false, unknown, never]>;
<T>(promise: Promise<T>): Promise<ErrValueTuple<T>>;
};
export declare const doTry: {
(fn: () => never): readonly [false, unknown, never];
(fn: () => Promise<never>): Promise<readonly [false, unknown, never]>;
<T>(fn: () => Promise<T>): Promise<ErrValueTuple<T>>;
<T>(fn: () => T): ErrValueTuple<T>;
};
export declare const isFailure: (result: ErrValueTuple<unknown>) => result is Failure;
export declare const isSuccess: (result: ErrValueTuple<unknown>) => result is Success<unknown>;
export default doTry;