ts-outcome
Version:
A small set of Typescript utils to represent success / failure in a more sane way than throwing errors
33 lines (32 loc) • 1.2 kB
TypeScript
type DefaultErrorType = Error;
export type OutcomeSuccess<SuccessType> = {
type: 'success';
isSuccess: true;
value: SuccessType;
};
export type OutcomeError<ErrorType> = {
type: 'error';
isSuccess: false;
error: ErrorType;
};
/**
* An Outcome type representing either a successful value or an error.
*/
export type Outcome<SuccessType, ErrorType = DefaultErrorType> = OutcomeSuccess<SuccessType> | OutcomeError<ErrorType>;
/**
* Creates a successful Outcome.
*/
export declare function makeSuccess<SuccessType, ErrorType = DefaultErrorType>(value: SuccessType): Outcome<SuccessType, ErrorType>;
/**
* Creates an error Outcome.
*/
export declare function makeError<SuccessType, ErrorType = DefaultErrorType>(error: ErrorType): Outcome<SuccessType, ErrorType>;
/**
* Checks if an Outcome is successful.
*/
export declare function isSuccess<SuccessType, ErrorType = DefaultErrorType>(result: Outcome<SuccessType, ErrorType>): result is OutcomeSuccess<SuccessType>;
/**
* Checks if an Outcome is an error.
*/
export declare function isError<SuccessType, ErrorType = DefaultErrorType>(result: Outcome<SuccessType, ErrorType>): result is OutcomeError<ErrorType>;
export {};