@benodiwal/rusty-ts
Version:
A TypeScript library providing Rust-like Result and Option types for safer and more expressive error handling and optional values.
43 lines (42 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Results = void 0;
class Results {
static ok(value) {
return { type: 'Ok', value };
}
static err(error) {
return { type: 'Err', error };
}
static isOk(result) {
return result.type === 'Ok';
}
static isErr(result) {
return result.type === 'Err';
}
static unwrap(result) {
if (Results.isOk(result)) {
return result.value;
}
throw new Error('Called unwrap on an Err value');
}
static unwrapOr(result, defaultValue) {
return Results.isOk(result) ? result.value : defaultValue;
}
static unwrapOrElse(result, fn) {
return Results.isOk(result) ? result.value : fn(result.error);
}
static map(result, fn) {
return Results.isOk(result) ? Results.ok(fn(result.value)) : result;
}
static mapErr(result, fn) {
return Results.isErr(result) ? Results.err(fn(result.error)) : result;
}
static andThen(result, fn) {
return Results.isOk(result) ? fn(result.value) : result;
}
static orElse(result, fn) {
return Results.isErr(result) ? fn(result.error) : result;
}
}
exports.Results = Results;