Hyperlinkv0.8.0-beta.28

Effect

Effect.satisfiesSuccessTypeconsteffect/Effect.ts:15141
<A>(): <A2 extends A, E, R>(effect: Effect<A2, E, R>) => Effect<A2, E, R>

Ensures that an effect's success type extends a given type A.

Details

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

Example (Constraining the success type)

import { Effect } from "effect"

// Define a constraint that the success type must be a number
const satisfiesNumber = Effect.satisfiesSuccessType<number>()

// This works - Effect<42, never, never> extends Effect<number, never, never>
const validEffect = satisfiesNumber(Effect.succeed(42))

// This would cause a TypeScript compilation error:
// const invalidEffect = satisfiesNumber(Effect.succeed("string"))
//                                      ^^^^^^^^^^^^^^^^^^^^^^
// Type 'string' is not assignable to type 'number'
utility types
export const satisfiesSuccessType = <A>() => <A2 extends A, E, R>(effect: Effect<A2, E, R>): Effect<A2, E, R> => effect