0.3.0 • Published 8 years ago
@es2/option v0.3.0
@es2/option

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/optionconst { Option, Some, None } = require('@es2/option')
Some(2)
Option.Some(2)
// Also
import { Option, Some, None } from '@es2/option'
Some(2)
Option.Some(2)