Read documentation
npm install @es2/result-option
Package written for ECMAScript v5+.
const { Option, Some, None, Result } = require('@es2/result-option')
Some.of(2)
Option.some(2)
import { Option, Some, None, Result } from '@es2/result-option'
Some.of(2)
Option.some(2)
import { Ok, ResultClass } from '@es2/result-option'
const ResultClass<number, string> = Ok.of(12)
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())