• English
  • Function: inspect()

    Executes a side effect function on the success 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

    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 inspect: <Result.Result<42, never>, void>(fn: (a: 42) => void) => (result: Result.Result<42, never>) => Result.Result<42, never> (+1 overload)
    inspect
    ((
    value: 42
    value
    ) =>
    var console: Console
    console
    .
    Console.log(...data: any[]): void

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

    MDN Reference

    log
    ('Debug:',
    value: 42
    value
    )),
    ); // Console output: "Debug: 42" // Result: { type: 'Success', value: 42 }

    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 inspect: <Result.Result<never, "error">, void>(fn: (a: never) => void) => (result: Result.Result<never, "error">) => Result.Result<never, "error"> (+1 overload)
    inspect
    ((
    value: never
    value
    ) =>
    var console: Console
    console
    .
    Console.log(...data: any[]): void

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

    MDN Reference

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

    See

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

    Call Signature

    inspect<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

    inspect<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>>