Hyperlinkv0.8.0-beta.28

Filter

Filter.FilterEffectinterfaceeffect/Filter.ts:82
(input: Input): Effect<Result.Result<Pass, Fail>, E, R>

Represents an effectful filter function that can produce Effects.

Details

Similar to a regular Filter, but the filtering operation itself can be effectful, allowing for asynchronous operations, error handling, and dependency injection.

Example (Defining an effectful user filter)

import { Effect, Filter, Result } from "effect"

// An effectful filter that validates user data
type User = { id: string; isActive: boolean }
type ValidationError = { message: string }

const validateUser: Filter.FilterEffect<
  string,
  User,
  User,
  ValidationError,
  never
> = (id) =>
  Effect.gen(function*() {
    const user: User = { id, isActive: id.length > 0 }
    return user.isActive ? Result.succeed(user) : Result.fail(user)
  })
models
Source effect/Filter.ts:829 lines
export interface FilterEffect<
  in Input,
  out Pass,
  out Fail,
  out E = never,
  out R = never
> {
  (input: Input): Effect<Result.Result<Pass, Fail>, E, R>
}
Referenced by 7 symbols