export class Err { #inner: T #exception?: U constructor(inner: T, exception?: U) { this.#inner = inner this.#exception = exception } get inner(): T { return this.#inner } get exception(): U | undefined { return this.#exception; } /** * Type guard for `Ok` * @returns `true` if `Ok`; `false` if `Err` */ isOk(): false { return false } /** * Type guard for `Err` * @returns `true` if `Err`; `false` if `Ok` */ isErr(): this is Err { return true } /** * Create an `Err` * @param inner * @returns `Err(inner)` */ static new(inner: E, exception: F): Err { return new Err(inner, exception) } }