🌋 Adds exception to error type to help debugging

This commit is contained in:
Rune Harlyk
2024-02-23 00:57:58 +01:00
parent 1b2d583230
commit 1f8d753dd7
2 changed files with 15 additions and 9 deletions
+11 -5
View File
@@ -1,14 +1,20 @@
export class Err<T> { export class Err<T, U> {
#inner: T #inner: T
#exception?: U
constructor(inner: T) { constructor(inner: T, exception?: U) {
this.#inner = inner this.#inner = inner
this.#exception = exception
} }
get inner(): T { get inner(): T {
return this.#inner return this.#inner
} }
get exception(): U | undefined {
return this.#exception;
}
/** /**
* Type guard for `Ok` * Type guard for `Ok`
* @returns `true` if `Ok`; `false` if `Err` * @returns `true` if `Ok`; `false` if `Err`
@@ -21,7 +27,7 @@ export class Err<T> {
* Type guard for `Err` * Type guard for `Err`
* @returns `true` if `Err`; `false` if `Ok` * @returns `true` if `Err`; `false` if `Ok`
*/ */
isErr(): this is Err<T> { isErr(): this is Err<T, U> {
return true return true
} }
@@ -30,7 +36,7 @@ export class Err<T> {
* @param inner * @param inner
* @returns `Err(inner)` * @returns `Err(inner)`
*/ */
static new<E>(inner: E): Err<E> { static new<E, F>(inner: E, exception: F): Err<E, F> {
return new Err<E>(inner) return new Err<E, F>(inner, exception)
} }
} }
+4 -4
View File
@@ -1,7 +1,7 @@
import { Err } from './err' import { Err } from './err'
import { Ok } from './ok' import { Ok } from './ok'
export type Result<T = unknown, E = unknown> = Ok<T> | Err<E> export type Result<T = unknown, E = unknown, F = unknown> = Ok<T> | Err<E, F>
export namespace Result { export namespace Result {
/** /**
@@ -12,9 +12,9 @@ export namespace Result {
} }
/** /**
* @returns `Err<E>` * @returns `Err<E, F>`
*/ */
export function err<E = unknown>(error: E) { export function err<E = unknown, F = unknown>(error: E, exception?: F) {
return Err.new(error) return Err.new(error, exception)
} }
} }