Package: effect
Module: Layer
Ensures that a layer’s requirements type extends a given type R.
Details
This function provides compile-time type checking to ensure that the requirements type of a layer conforms to a specific type constraint.
Example (Constraining layer service requirements)
import { Layer } from "effect"
declare const FortyTwoLayer: Layer.Layer<never, never, 42>
declare const StringLayer: Layer.Layer<never, never, string>
// Define a constraint that the service requirements must be numbers
const satisfiesNumber = Layer.satisfiesServicesType<number>()
// This works - Layer<never, never, 42> extends Layer<never, never, number>
const validLayer = satisfiesNumber(FortyTwoLayer)
// This would cause a TypeScript compilation error:
// const invalidLayer = satisfiesNumber(StringLayer)
// ^^^^^^^^^^^
// Type 'string' is not assignable to type 'number'
Signature
declare const satisfiesServicesType: <RIn>() => <ROut, E, RIn2 extends RIn>(layer: Layer<ROut, E, RIn2>) => Layer<ROut, E, RIn2>
Since v4.0.0