Something went wrong. Try again.
Link bookmarking tool built on aproto (early alpha)
Something went wrong. Try again.
847 B · 46 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647type Err = { ok: false value: undefined error: string | Error}
type Success<T> = { ok: true value: T error: undefined}
type Result<T> = Err | Success<T>
export function isErr(result: Result<unknown>): result is Err { return !result.ok}
export function err(error: string | Error): Err { return { ok: false, value: undefined, error, }}
export function ok<T>(value: T): Success<T> { return { ok: true, value, error: undefined, }}
export async function tryCatch<T>(promise: Promise<T>): Promise<Result<T>> { try { const value = await promise return ok(value) } catch (error) { console.error(error) if (Error.isError(error)) { return err(error) } return err(String(error)) }}