• English
  • Function: inspectError()

    Executes a side effect function on the error value of a Result or ResultAsync, without modifying the original result. This is useful for debugging, logging, or performing other side effects while maintaining the original value and error state.

    Type Param

    R1

    The input Result or ResultAsync.

    Type Param

    R2

    The return type of the inspection function.

    Examples

    Failure Case

    import { 
    import Result
    Result
    } from '@praha/byethrow';
    const
    const result: Result.Result<never, "error">
    result
    =
    import Result
    Result
    .
    const pipe: <Result.Result<never, "error">, Result.Result<never, "error">>(a: Result.Result<never, "error">, ab: (a: Result.Result<never, "error">) => Result.Result<never, "error">) => Result.Result<never, "error"> (+25 overloads)
    pipe
    (
    import Result
    Result
    .
    const fail: <"error">(error: "error") => Result.Result<never, "error"> (+1 overload)
    fail
    ('error'),
    import Result
    Result
    .
    const inspectError: <Result.Result<never, "error">, void>(fn: (a: "error") => void) => (result: Result.Result<never, "error">) => Result.Result<never, "error"> (+1 overload)
    inspectError
    ((
    error: "error"
    error
    ) =>
    var console: Console
    console
    .
    Console.log(...data: any[]): void

    The console.log() static method outputs a message to the console.

    MDN Reference

    log
    ('Debug error:',
    error: "error"
    error
    )),
    ); // Console output: "Debug error: error" // Result: { type: 'Failure', error: 'error' }

    Success Case

    import { 
    import Result
    Result
    } from '@praha/byethrow';
    const
    const result: Result.Result<42, never>
    result
    =
    import Result
    Result
    .
    const pipe: <Result.Result<42, never>, Result.Result<42, never>>(a: Result.Result<42, never>, ab: (a: Result.Result<42, never>) => Result.Result<42, never>) => Result.Result<42, never> (+25 overloads)
    pipe
    (
    import Result
    Result
    .
    const succeed: <42>(value: 42) => Result.Result<42, never> (+1 overload)
    succeed
    (42),
    import Result
    Result
    .
    const inspectError: <Result.Result<42, never>, void>(fn: (a: never) => void) => (result: Result.Result<42, never>) => Result.Result<42, never> (+1 overload)
    inspectError
    ((
    error: never
    error
    ) =>
    var console: Console
    console
    .
    Console.log(...data: any[]): void

    The console.log() static method outputs a message to the console.

    MDN Reference

    log
    ('Debug error:',
    error: never
    error
    )),
    ); // No console output // Result: { type: 'Success', value: 42 }

    See

    pipe - It is recommended to use this function with the pipe function for better readability and composability.

    Call Signature

    inspectError<R1, R2>(fn): (result) => ResultFor<R1 | R2, InferSuccess<R1>, InferFailure<R1>>

    Type Parameters

    R1

    R1 extends ResultMaybeAsync<any, any>

    R2

    R2

    Parameters

    fn

    (a) => R2

    Returns

    (result) => ResultFor<R1 | R2, InferSuccess<R1>, InferFailure<R1>>

    Call Signature

    inspectError<F>(fn): <R1>(result) => ResultFor<R1 | ReturnType<F>, InferSuccess<R1>, InferFailure<R1>>

    Type Parameters

    F

    F extends (a) => unknown

    Parameters

    fn

    F

    Returns

    <R1>(result) => ResultFor<R1 | ReturnType<F>, InferSuccess<R1>, InferFailure<R1>>