🌋 Adds exception to error type to help debugging
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user