@px-d/rsjs
v1.1.1
Published
Library inspired by Rusts `Result`-Type
Readme
RSJS
Library inspired by Rusts Result-Type
Currently Implemented:
isOk()isErr()isOkAnd()isErrAnd()unwrap()unwrapOr()unwrapOrElse()unwrapErr()map()mapOr()mapErr()expect()expectErr()and()andThen()or()orElse()
Namespace Functions:
Result.wrap()Result.wrapAsync()Result.isResult()Result.match()
Documentation
isOk()
const result: Result<number, string> = ok(20);
result.isOk(); // trueisErr()
const result: Result<number, string> = err("Error");
result.isErr(); // trueisOkAnd()
const result: Result<number, string> = ok(20);
result.isOkAnd((value) => console.log("Result is:", value));
// Prints to LogisErrAnd()
const result: Result<number, string> = err("Error");
result.isErrAnd((value) => console.log("Result is:", value));
// Prints to Logunwrap()
const result: Result<number, string> = ok(20);
result.unwrap(); // Returns 20
const result: Result<number, string> = err("Error");
result.unwrap(); // Will throwunwrapOr()
const result: Result<number, string> = err("Error");
result.unwrapOr(20); // 20unwrapOrElse()
const result: Result<number, string> = err("Error");
result.unwrapOrElse(() => 20); // 20 (Must return the Ok value type)unwrapErr()
const result: Result<number, string> = err("Error");
result.unwrapErr(); // Returns "Error"
const result: Result<number, string> = ok(2);
result.unwrapErr(); // Will throwmap()
const result: Result<number, string> = ok(20);
result.map((v) => v + 5); // 25mapOr()
const result: Result<number, string> = err(20);
result.mapOr((v) => v + 5, 50); // 50mapErr()
const result: Result<number, string> = err("Hi");
result.mapErr((v) => v.toUpperCase()); // "HI"expect()
const result: Result<number, string> = err("Hi");
result.expect("This is an error"); // prints "This is an error"expectErr()
const result: Result<number, string> = err("Hi");
result.expectErr("This is an error"); // prints "Hi"and()
const result: Result<number, string> = ok(1);
const second: Result<number, string> = err("error");
result.and(second); // Returns the Err
second.or(result); // Returns the ErrandThen()
const result: Result<number, string> = ok(1);
// Returns the a new Ok with value 2
result.andThen((value) => {
return ok(value + 1);
});
------------
const result: Result<number, string> =err("Error");
// Returns the Error with value "Error"
result.andThen((value) => {
return ok(value + 1);
});
or()
const a: Result<number, string> = ok(1);
const b: Result<number, string> = err("Err");
a.or(b); // Returns the Ok
b.or(a); // Returns the OkorElse()
const a: Result<number, string> = ok(1);
const b: Result<number, string> = err("Err");
a.orElse((e) => err(e + "2")); // Returns the Ok with value 1
b.orElse((e) => ok(-1)); // Returns the Ok with value -1Result.wrap()
function thatFails() {
throw new Error("This is an error");
}
Result.wrap(thatFails); // Holds the Err of the function that failedResult.wrapAsync()
async function thatFails() {
throw new Error("This is an error");
}
Result.wrap(thatFails); // Holds the Promise<Err> of the function that failedResult.isResult()
Result.isResult(ok(1)); // true
Result.isResult(err(1)); // true
Result.isResult(1); // falseResult.match()
Result.match(
err("I'm an error"),
(value) => {
// This wont reach
},
(error) => {
// Error is "I'm an error"
}
);or
Result.match(
ok("I'm a value"),
(value) => {
// Value is "I'm a value"
},
(error) => {
// This wont reach
}
);