@eeue56/ts-core
Version:
Core library for TypeScript inspired by Elm
22 lines (21 loc) • 1.58 kB
TypeScript
import * as Maybe from './maybe';
export declare type Err<Error> = {
kind: 'Err';
error: Error;
};
export declare type Ok<Value> = {
kind: 'Ok';
value: Value;
};
export declare type Result<Error, Value> = Ok<Value> | Err<Error>;
export declare function Ok<Error, Value>(value: Value): Result<Error, Value>;
export declare function Err<Error, Value>(error: Error): Result<Error, Value>;
export declare function withDefault<Error, Value>(value: Value, result: Result<Error, Value>): Value;
export declare function either<A>(result: Result<A, A>): A;
export declare function toMaybe<Error, Value>(result: Result<Error, Value>): Maybe.Maybe<Value>;
export declare function fromMaybe<Error, Value>(error: Error, maybe: Maybe.Maybe<Value>): Result<Error, Value>;
export declare function map<Error, A, Value>(func: (val: A) => Value, result: Result<Error, A>): Result<Error, Value>;
export declare function map2<Error, A, B, Value>(func: (firstResult: A, secondResult: B) => Value, firstResult: Result<Error, A>, secondResult: Result<Error, B>): Result<Error, Value>;
export declare function map3<Error, A, B, C, Value>(func: (firstResult: A, secondResult: B, thirdResult: C) => Value, firstResult: Result<Error, A>, secondResult: Result<Error, B>, thirdResult: Result<Error, C>): Result<Error, Value>;
export declare function mapError<ErrorA, ErrorB, Value>(func: (val: ErrorA) => ErrorB, result: Result<ErrorA, Value>): Result<ErrorB, Value>;
export declare function andThen<Error, A, B>(func: (value: A) => Result<Error, B>, result: Result<Error, A>): Result<Error, B>;