Coder Social home page Coder Social logo

sergeysova / es2-result-option Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 789 KB

Maybe and Either monad for your JavaScript project

Home Page: https://www.npmjs.com/@es2/result-option

License: MIT License

JavaScript 100.00%
javascript monad maybe either option result chain sergeysova docz

es2-result-option's Introduction

@es2/result-option Maintainability Build Status Coverage Status

Readme

Read documentation

Installation

npm install @es2/result-option

Package written for ECMAScript v5+.

CommonJS

const { Option, Some, None, Result } = require('@es2/result-option')

Some.of(2)
Option.some(2)

ECMAScript Module

import { Option, Some, None, Result } from '@es2/result-option'

Some.of(2)
Option.some(2)

TypeScript

import { Ok, ResultClass } from '@es2/result-option'

const ResultClass<number, string> = Ok.of(12)

Examples

function divide(numerator, denominator) {
  return numerator === 0
    ? Option.zero()
    : Option.some(numerator / denominator)
}

const result = divide(12, 3)
  .extractOr(0)

assert(result, 4)
function checkOptional(optional: Option<number>) {
  if (optional.isSome()) {
    console.log(`has value ${optional.extractOr(null)}`)
  }
  else {
    console.log(`has no value`)
  }
}
let msg = Some.of('foo bar')

// Destroy option, extract string
let unwrappedMessage = msg.extractOr('default message')
// 'foo bar'
function getNumberOver5(): Option<number> {
  const number = Math.floor(Math.random() * 10)

  if (number > 5) {
    return Option.none()
  }

  return Some(number)
}

function printNumber(num: Option<number>) {
  console.log(`Generated number: ${num.extractOr(0)}`)
}

printNumber(getNumberOver5().or(Some(10)))
declare function getUser(id: number): Promise<Option<User>>

return (await getUser(1))
  .extractOrElse(() => User.default())

es2-result-option's People

Contributors

sergeysova avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.