@stnekroman/tstools
Version:
Set of handy tools for TypeScript development
39 lines (38 loc) • 1.45 kB
TypeScript
import { type Functions } from './Functions';
export type Success<T> = Result<T, never>;
export type Failure<E> = Result<never, E>;
export type SuccessData<T> = {
data: T;
};
export type FailureData<E> = {
error: E;
};
export type ResultData<T, E = unknown> = SuccessData<T> | FailureData<E>;
export declare namespace Success {
function isSuccessData<T>(result: SuccessData<T> | FailureData<unknown>): result is SuccessData<T>;
}
export declare namespace Failure {
function isFailureData<E>(result: SuccessData<unknown> | FailureData<E>): result is FailureData<E>;
}
export declare class Result<T, E = unknown> implements SuccessData<T>, FailureData<E> {
readonly _data: T;
readonly _error: E;
private constructor();
private constructor();
static success(): Success<void>;
static success<T = void>(data: T): Success<T>;
static failure<E>(error: E): Failure<E>;
static from<T, E>(serializable: SuccessData<T> | FailureData<E>): Result<T, E>;
isSuccess(): this is Success<T>;
isFailure(): this is Failure<E>;
get data(): T;
get error(): E;
map<U>(f: Functions.MapFunction<T, U>): Result<U, E>;
flatMap<T2, E2>(f: Functions.MapFunction<T, Result<T2, E2>>): Result<T2, E | E2>;
toJSON(): SuccessData<T> | FailureData<E>;
toString(): string;
static groupResults<T, E>(results: Result<T, E>[]): {
successes: Success<T>[];
failures: Failure<E>[];
};
}