UNPKG

@stnekroman/tstools

Version:

Set of handy tools for TypeScript development

39 lines (38 loc) 1.45 kB
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>[]; }; }