A library for people with options and results.
npm install optionem
yarn add optionem
Optionem = 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