Hyperlinkv0.8.0-beta.28

Layer

Layer.satisfiesServicesTypeconsteffect/Layer.ts:2419
<RIn>(): <ROut, E, RIn2 extends RIn>(
  layer: Layer<ROut, E, RIn2>
) => Layer<ROut, E, RIn2>

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'
utility types
Source effect/Layer.ts:24192 lines
export const satisfiesServicesType =
  <RIn>() => <ROut, E, RIn2 extends RIn>(layer: Layer<ROut, E, RIn2>): Layer<ROut, E, RIn2> => layer