interface / @typed/fx/Versioned

Versioned.Service

Defines the service state contract.

Package version
2.0.0-beta.13
Category
Services
Since
1.0.0
Member of
Versioned

Import

import { Versioned } from "@typed/fx/Versioned";

Access Versioned.Service through the imported Versioned export. Its declaration below describes the member.

Signatures

interface Service<Self, Id extends string, E1, A2, E2, A3, E3> extends Versioned<Self, E1, A2, E2, Self, A3, E3, Self> {
    readonly id: Id;
    readonly service: Context.Service<Self, Versioned<never, E1, A2, E2, never, A3, E3, never>>;
    readonly make: <R1 = never, R2 = never, R3 = never>(version: Effect.Effect<number, E1, R1>, fx: Fx.Fx<A2, E2, R2>, effect: Effect.Effect<A3, E3, R3>) => Layer.Layer<Self, never, Exclude<R1 | R2 | R3, Scope.Scope>>;
}

Why

Creates an Effect service tag that exposes current reads, pushed updates, and versions through one Layer-provided state dependency.

Ownership and lifetime

Service is a contract and performs no acquisition. Implementations retain the errors, services, interruption, and Scope requirements expressed by its members.

Property: id

Exposes id on the versioned contract.

Property: id: Why

Retains the literal service identifier for tooling, diagnostics, and Layer composition.

Property: id: Ownership and lifetime

id does not own its inputs. Observation and current reads retain upstream lifetime, typed failures, services, and interruption behavior.

Property: make

Exposes make on the versioned contract.

Property: make: Why

Builds one Versioned value from independently typed version, update, and current-value channels instead of forcing them into one error or environment type.

Property: make: Ownership and lifetime

Construction is lazy with respect to the Fx channel. Current reads share in-flight work until interrupt is run; each component retains its declared errors and services.

Property: service

Exposes service on the versioned contract.

Property: service: Why

Exposes the underlying Effect Context service used by the generated Versioned class.

Property: service: Ownership and lifetime

service does not own its inputs. Observation and current reads retain upstream lifetime, typed failures, services, and interruption behavior.

Other public imports

These import paths expose the same declaration. Each page retains its own public name and signature.

Source