0.3.0 • Published 6 years ago

@es2/option v0.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 years ago

@es2/option Maintainability Build Status Coverage Status

Readme

Option represents an optional value: every Option is either Some and contains value, or None, and does not. Options have a number of uses:

  • Initial values
  • Return values for functions that are not defined over their entire input range (partial functions)
  • Optional fields
  • Optional function arguments
  • Nullable pointers
function divide(numerator, denominator) {
  return numerator === 0
    ? None()
    : Some(numerator / denominator)
}

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

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

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

  if (number > 5) {
    return None()
  }

  return Some()
}

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

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

return (await getUser(1))
  .or(User.default())
  .unwrap()

Installation

npm install @es2/option
const { Option, Some, None } = require('@es2/option')
Some(2)
Option.Some(2)

// Also

import { Option, Some, None } from '@es2/option'
Some(2)
Option.Some(2)
0.3.0

6 years ago

0.2.0

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago