0.3.0 • Published 6 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. Option
s 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)