Library inspired by Rusts Result-Type
isOk()isErr()isOkAnd()isErrAnd()unwrap()unwrapOr()unwrapOrElse()unwrapErr()map()mapOr()mapErr()expect()expectErr()and()andThen()or()orElse()
Result.wrap()Result.wrapAsync()Result.isResult()Result.match()
const result: Result<number, string> = ok(20);
result.isOk(); // trueconst result: Result<number, string> = err("Error");
result.isErr(); // trueconst result: Result<number, string> = ok(20);
result.isOkAnd((value) => console.log("Result is:", value));
// Prints to Logconst result: Result<number, string> = err("Error");
result.isErrAnd((value) => console.log("Result is:", value));
// Prints to Logconst result: Result<number, string> = ok(20);
result.unwrap(); // Returns 20
const result: Result<number, string> = err("Error");
result.unwrap(); // Will throwconst result: Result<number, string> = err("Error");
result.unwrapOr(20); // 20const result: Result<number, string> = err("Error");
result.unwrapOrElse(() => 20); // 20 (Must return the Ok value type)const result: Result<number, string> = err("Error");
result.unwrapErr(); // Returns "Error"
const result: Result<number, string> = ok(2);
result.unwrapErr(); // Will throwconst result: Result<number, string> = ok(20);
result.map((v) => v + 5); // 25const result: Result<number, string> = err(20);
result.mapOr((v) => v + 5, 50); // 50const result: Result<number, string> = err("Hi");
result.mapErr((v) => v.toUpperCase()); // "HI"const result: Result<number, string> = err("Hi");
result.expect("This is an error"); // prints "This is an error"const result: Result<number, string> = err("Hi");
result.expectErr("This is an error"); // prints "Hi"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 Errconst 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);
});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 Okconst 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 -1function thatFails() {
throw new Error("This is an error");
}
Result.wrap(thatFails); // Holds the Err of the function that failedasync function thatFails() {
throw new Error("This is an error");
}
Result.wrap(thatFails); // Holds the Promise<Err> of the function that failedResult.isResult(ok(1)); // true
Result.isResult(err(1)); // true
Result.isResult(1); // falseResult.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
}
);