manatki
TypeScript icon, indicating that this package has built-in type declarations

0.0.0 • Public • Published

lc

Build Status

Dependency-free library for functional programming in Typescript/Javascript

Status: in development (v0.0.0)

Features

  1. Options
declare class Option<T> implements Optionable<T> {
    static Some<T>(value: T): Option<T>;
    static None(): Option<{}>;
    value?: T;
    isEmpty: boolean;
    isDefined: boolean;
    constructor(value?: T);
    getOrElse<V>(stopGap: V): T | V;
    orElse<V>(fallback: Option<V>): Option<T | V>;
    map<P>(func: (val: T) => P): Option<P | T>;
    flatMap<P>(func: (val: T) => Option<P>): Option<T | P>;
    coflatMap<P>(func: (val: Option<T>) => P): Option<T | P>;
    forEach(func: (val: T) => void): void;
    filter(pred: (val: T) => boolean): Option<T>;
    flatten<K>(): Option<T | K>;
    combine<P>(that: Option<P>): Option<T | P>;
    match<P>(object: Matcher<Option<T>, P>): any;
}
  1. Either
declare class Either<K, T> implements Validatable<K, T> {
    static Left<T>(val: T): Either<T, any>;
    static Right<T>(val: T): Either<any, T>;
    isLeft: boolean;
    isRight: boolean;
    private readonly _left;
    private readonly _right;
    constructor(left: K, right: T);
    left(): LProjection<K, T>;
    right(): RProjection<K, T>;
    getOrElse<P>(stopGap: P): T | P;
    swap(): Either<T, K>;
    joinLeft(): void;
    joinRight(): void;
    fold(): void;
}

Interfaces

interface Traversable<T> {
    map<P>(func: (val: T) => P): Option<P | T>;
    flatMap<P>(func: (val: T) => Option<P>): Option<T | P>;
    coflatMap<P>(func: (val: Option<T>) => P): Option<T | P>;
    combine<P>(that: Option<P>): Option<T | P>;
    forEach(func: (val: T) => void): void;
    filter(pred: (val: T) => boolean): Option<T>;
    flatten(): Option<T>;
}
interface Optionable<T> extends Traversable<T> {
    isEmpty: boolean;
    isDefined: boolean;
    getOrElse<V>(stopGap: V): T | V;
    orElse<V>(fallback: Option<V>): Option<T | V>;
    match<P>(object: Matcher<Option<T>, P>): any;
    value?: T;
}

License

MIT

Package Sidebar

Install

npm i manatki

Weekly Downloads

1

Version

0.0.0

License

MIT

Unpacked Size

54.6 kB

Total Files

85

Last publish

Collaborators

  • eakarpov