/** * @example * ```ts * const [data, err] = to>(() => JSON.parse('{"a": 1}')); * if (err) { * console.log(err); * } else { * console.log(data!.a); * } * ``` */ export function to(f: () => R): [undefined, U] | [R, undefined] { try { return [f(), undefined]; } catch (err) { return [undefined, err as U]; } } /** * @example * ```ts * const [data, err] = safeParse>('{"a": 1}'); * ``` */ export function safeParse(str: string): [T, undefined] | [undefined, Error] { try { return [JSON.parse(str) as T, undefined]; } catch (error) { return [undefined, error as Error]; } }