Import
import { Sink } from "@typed/fx";Access Sink.Service through the imported Sink export. Its declaration below describes the member.
This public exposure is a re-export. Its import path is supported; declaration documentation is shared with the other public exposures below.
Signatures
export declare function Service<Self, A, E = never>(): <const Id extends string>(id: Id) => Sink.Class<Self, Id, A, E>;Why
A service sink lets producers emit toward an application capability while Layers choose the concrete destination, such as logging, persistence, or UI output.
Ownership and lifetime
Definition is pure. Class.make captures its construction context into the sink callbacks and
returns a Layer; providing that Layer controls availability and cleanup of captured scoped
services. Each static callback lookup uses the current Effect context.
Examples
import { Effect } from "effect"
import * as Sink from "@typed/fx/Sink"
class Output extends Sink.Service<Output, string>()("Output") {}
const OutputLive = Output.make(Effect.logError, Effect.log)
const program = Output.onSuccess("ready").pipe(Effect.provide(OutputLive))Other public imports
These import paths expose the same declaration. Each page retains its own public name and signature.