A library for people with options and results.
npm install optionem
yarn add optionemOptionem = Option in Latin
Using option
import { Option, None, Some } from "optionem";
function divide(numerator: number, denominator: number): Option<number> {
if (denominator === 0) {
return new None();
} else {
return new Some(numerator / denominator);
}
}
const result = divide(
Math.floor(Math.random() * 10),
Math.floor(Math.random() * 10)
);
result.match({
Some(x) {
console.log("Result ", x);
},
None() {
console.log("Can not divide by", 0);
},
});Using result
import { Result, Err, Ok } from "optionem";
function divide(
numerator: number,
denominator: number
): Result<number, string> {
if (denominator === 0) {
return new Err("divide by zero error");
} else {
return new Ok(numerator / denominator);
}
}
const result = divide(
Math.floor(Math.random() * 10),
Math.floor(Math.random() * 10)
);
result.match({
Ok(x) {
console.log("Result ", x);
},
Err(err) {
console.log("ERROR", err);
},
});The api of this library is made to resemble the one in rust.
This library can be used for
- Network Requests
- Database Gateways
- etc
This can be used in places where in normal circumstances you would use null or undefined. Null is bad enough but in javascript we also have undefined. It is time to eliminate null and undefined checks from your codebase.
An option has two variants that implement the Option<T> interface
- Some
- None
A result has two variants that implement the Result<T, E> interface
- Ok
- Err
This project is licensed under the MIT license.
- Implement Option
- Support async functions in methods of option
- Implement Result