Implementation of some helpers of Rust
stdlib on JavaScript/TypeScript
import { Some, None } from "krustykrab";
const someOption = Some("foo");
const noneOption = None();
import { Ok, Err } from "krustykrab";
const okResult = Ok("foo");
const errResult = Err("bar");
Panics if the value is null
or undefined
or returns it otherwise
import { unwrap } from "krustykrab";
const fooOrUndefined = document.getElementById('foo'); // html element or `undefined`
const foo = unwrap(fooOrUndefined); // exactly html element
Returns the value if it's not null
or undefined
, or returns the default value
import { unwrapOr } from "krustykrab";
const foo: Partial<Record<string, string>> = { bar: 'baz' };
unwrapOr(foo.bar, 'qux'); // returns 'baz'
unwrapOr(foo.bat, 'qux'); // returns 'qux'
Returns the value if it's not null
or undefined
, or computes it
import { unwrapOrElse } from "krustykrab";
const foo: Partial<Record<string, string>> = { bar: 'baz' };
unwrapOrElse(foo.bar, () => 'qux'); // returns 'baz'
unwrapOrElse(foo.bat, () => 'qux'); // returns 'qux'
Converts Promise
to Result
import { getResult } from "krustykrab";
const successResult = await getResult(Promise.resolve('foo'));
successResult.unwrap(); // returns 'foo'
const errorResult = await getResult(Promise.reject('bar'));
errorResult.unwrapErr(); // returns 'bar'
Convert a nullable variable to Option
import { toOption } from "krustykrab";
const option = toOption('foo');
option.isNone(); // returns `false`;
option.unwrap(); // returns `'foo'`;
toOption(null).isNone(); // returns `true`
toOption(undefined).isNone(); // returns `true`
Wrap the result of a function call with Result
import { tryCatch } from "krustykrab";
const successResult = tryCatch(() => JSON.parse('{"foo": "bar"}'));
successResult.unwrap(); // returns `{ foo: "bar" }`
const errorResult = tryCatch(() => JSON.parse("{invalid json}"));
errorResult.isErr(); // returns `true`