Skip to content

Function: tap()

Call Signature

tap<R, FnReturn>(fn): (result) => Result<UnwrapOk<R>, UnwrapErr<R>>

Defined in: fp.ts:170

Takes a side-effect function and returns a function that accepts a Result. The returned function passes the Result through the side-effect function and returns the original Result unchanged.

Useful for debugging, logging, or performing side effects without modifying the Result.

Type Parameters

R

R extends Result

The input Result type

FnReturn

FnReturn

The return type of the side-effect function (ignored)

Parameters

fn

(result) => NonPromise<FnReturn>

Side-effect function to execute with the Result

Returns

A function that takes a Result, executes the side-effect function, and returns the original Result

(result): Result<UnwrapOk<R>, UnwrapErr<R>>

Parameters

result

R

Returns

Result<UnwrapOk<R>, UnwrapErr<R>>

Example

typescript
const result = pipe(
  ok("hello"),
  tap((result) => {
    console.log("Result:", result); // Logs the result (side-effect)
    return "something"; // Return value is ignored
  }),
  mapOk((data) => data.toUpperCase()), // Original result is passed through
); // { success: true, data: "HELLO" }

Call Signature

tap<R, FnReturn>(fn): (result) => Promise<Result<UnwrapOk<R>, UnwrapErr<R>>>

Defined in: fp.ts:173

Takes a side-effect function and returns a function that accepts a Result. The returned function passes the Result through the side-effect function and returns the original Result unchanged.

Useful for debugging, logging, or performing side effects without modifying the Result.

Type Parameters

R

R extends OrPromise<Result>

The input Result type

FnReturn

FnReturn

The return type of the side-effect function (ignored)

Parameters

fn

(result) => OrPromise<FnReturn>

Side-effect function to execute with the Result

Returns

A function that takes a Result, executes the side-effect function, and returns the original Result

(result): Promise<Result<UnwrapOk<R>, UnwrapErr<R>>>

Parameters

result

R

Returns

Promise<Result<UnwrapOk<R>, UnwrapErr<R>>>

Example

typescript
const result = pipe(
  ok("hello"),
  tap((result) => {
    console.log("Result:", result); // Logs the result (side-effect)
    return "something"; // Return value is ignored
  }),
  mapOk((data) => data.toUpperCase()), // Original result is passed through
); // { success: true, data: "HELLO" }