Hyperlinkv0.8.0-beta.28

Effect

Effect.satisfiesServicesTypeconsteffect/Effect.ts:15203
<R>(): <A, E, R2 extends R>(effect: Effect<A, E, R2>) => Effect<A, E, R2>

Ensures that an effect's requirements type extends a given type R.

Details

This helper is checked at compile time and does not change the effect's runtime behavior.

Example (Constraining the services type)

import { Effect } from "effect"

// Define a constraint that requires a string as the requirements type
const satisfiesStringServices = Effect.satisfiesServicesType<string>()

// This works - effect requires string
const validEffect: Effect.Effect<number, never, "config"> = Effect.succeed(42)
const constrainedEffect = satisfiesStringServices(validEffect)

// This would cause a TypeScript compilation error if uncommented:
// const invalidEffect: Effect.Effect<number, never, number> = Effect.succeed(42)
// const constrainedInvalid = satisfiesStringServices(invalidEffect)
utility types
export const satisfiesServicesType = <R>() => <A, E, R2 extends R>(effect: Effect<A, E, R2>): Effect<A, E, R2> => effect