UNPKG

@typed/lenses

Version:

Strongly-typed functional lenses

13 lines 573 B
import { Arity1, Arity2, Curry2 } from '@typed/lambda'; export interface Lens<A, B> { readonly get: Arity1<A, B>; readonly update: Curry2<Arity1<B, B>, A, A>; } export declare namespace Lens { const create: <A, B>(get: Arity1<A, B>, set: Arity2<B, A, A>) => Lens<A, B>; const id: <A>() => Lens<A, A>; const prop: <A, K extends keyof A>(key: K) => Lens<A, A[K]>; } export declare type LensInput<A> = A extends Lens<infer R, any> ? R : never; export declare type LensOutput<A> = A extends Lens<any, infer R> ? R : never; //# sourceMappingURL=Lens.d.ts.map