UNPKG

pragmatic-fp-ts

Version:

Opinionated functional programming library with easy use in mind

48 lines (47 loc) 2.23 kB
import { Effect, Mappable, Predicate } from "./main"; import { Monad, MonadType } from "./types"; export type Either<R, L = Error> = Left<R, L> | Right<R, L>; export type EitherMatcher<R, L, B> = { left?: (err: L) => B; right?: (val: R) => B; }; export declare class Left<R, L = Error> extends Monad<R> { readonly errorValue: L; constructor(errVal: L); _<B>(_: Mappable<R, B>, _hint?: L): Either<NonNullable<B>, L>; bind: <B>(_: Mappable<R, B>, _hint?: L) => Either<NonNullable<B>, L>; bindM<B>(_: Mappable<Monad<R>, Monad<B>>): Either<NonNullable<B>, L>; filter(_: any, _hint?: L): Either<NonNullable<R>, L>; effect(_: any): Either<NonNullable<R>, L>; getValue(): NonNullable<R>; getValueOr(alt: R): R; match<B>(matcher: EitherMatcher<R, L, B>): Either<NonNullable<B>, L | Error>; isLeft(): boolean; isRight(): boolean; getReason(): L; } export declare class Right<R extends NonNullable<any>, L = Error> extends Monad<R> { readonly value: R; constructor(value: R); _<B>(fn: Mappable<R, B>, hint?: L): Either<NonNullable<B>, L | Error>; bind: <B>(fn: Mappable<R, B>, hint?: L) => Either<NonNullable<B>, Error | L>; bindM<B>(fn: Mappable<Monad<R>, Monad<B>>): Either<NonNullable<B>, L | Error>; filter(fn: Predicate<R>, hint?: L): Either<NonNullable<R>, L | Error>; effect(fn: Effect<R>): Either<NonNullable<R>, L>; getValue(): NonNullable<R>; getValueOr(_: R): R; match<B>(matcher: EitherMatcher<R, L, B>): Either<NonNullable<B>, L>; isLeft(): boolean; isRight(): boolean; getReason(): void; } export declare function left<R, L = Error>(errVal: L): Left<R, L>; export declare function right<R, L = Error>(value: R): Right<R, L>; export declare function either<R, L = Error>(value: MonadType<R>, errVal?: L): Either<NonNullable<R>, L | Error>; export declare function isLeft<R = any, L = Error>(el: unknown): el is Left<R, L>; export declare function isRight<R = any, L = Error>(el: unknown): el is Right<R, L>; export declare function isEither<R = any, L = Error>(el: unknown): el is Either<R, L>; export declare const throwLeftAsError: { right: (data: any) => any; left: (reason: Error | string) => any; };