Nimble Pirate Monitor

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

    2.2.0 • Public • Published

    👍 Sums Up

    Installation

    npm install sums-up
    

    Example

    In TypeScript:

    import SumType from 'sums-up';
     
    class Maybe<T> extends SumType<{ Just: [T]; Nothing: [] }> {}
     
    function Just<T>(value: T): Maybe<T> {
      return new Maybe("Just", value);
    }
     
    function Nothing<T>(): Maybe<T> {
      return new Maybe("Nothing");
    }
     
    const x = Just("foo");
     
    const result = x.caseOf({
      Nothing: () => "nope",
      Just: (a) => a + "bar",
    });

    Or in JavaScript

    import SumType from 'sums-up';
     
    class Maybe extends SumType {}
     
    function Just(value) {
      return new Maybe("Just", value);
    }
     
    function Nothing() {
      return new Maybe("Nothing");
    }
     
    const x = Just("foo");
     
    const result = x.caseOf({
      Nothing: () => "nope",
      Just: (a) => a + "bar",
    });

    Wildcard Matching

    If the kind of a sum type instance isn't present in the pattern given to caseOf, a default key called _ will be used instead.

    import SumType from 'sums-up';
     
    class RequestState<T = never> extends SumType<{
      NotStarted: [];
      Connecting: [];
      Downloading: [number];
      Completed: [T];
      Failed: [string];
    }> {}
     
    const state = new RequestState('Failed', 'Connection reset.');
    const progressPercentage = state.caseOf({
      Downloading: pct => pct,
      Completed: () => 100,
      _: () => 0
    });

    Contributors:

    @hojberg @dfreeman @AdamEdgett

    Install

    npm i sums-up

    DownloadsWeekly Downloads

    2,209

    Version

    2.2.0

    License

    MIT

    Unpacked Size

    11.4 kB

    Total Files

    15

    Last publish

    Collaborators

    • hojberg