Import
import { Versioned } from "@typed/fx";Access Versioned.map through the imported Versioned 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 const map: {
<A, E, R, C, B, D>(options: {
onFx: (a: A) => C;
onEffect: (b: B) => D;
}): <R0, E0, R2, E2>(versioned: Versioned<R0, E0, A, E, R, B, E2, R2>) => Versioned<never, never, C, E, R, D, E0 | E2, R0 | R2>;
<R0, E0, A, E, R, B, E2, R2, C, D>(versioned: Versioned<R0, E0, A, E, R, B, E2, R2>, options: {
onFx: (a: A) => C;
onEffect: (b: B) => D;
}): Versioned<never, never, C, E, R, D, E0 | E2, R0 | R2>;
};Why
Applies corresponding pure projections to pushed and sampled values while leaving the version token unchanged.
Ownership and lifetime
map does not take ownership of its inputs. Its observation and current-read channels retain upstream lifetime, typed failures, services, and interruption behavior.
Pure callbacks preserve push order and cardinality. onFx applies to every pushed update;
onEffect applies only when the current value is sampled.
Examples
import { Effect } from "effect"
import * as Versioned from "@typed/fx/Versioned"
const length = Versioned.map(Versioned.of("typed"), {
onFx: (value) => value.length,
onEffect: (value) => value.length
})
const currentLength = Effect.runPromise(length)Other public imports
These import paths expose the same declaration. Each page retains its own public name and signature.