UNPKG

@typed/lenses

Version:

Strongly-typed functional lenses

12 lines 636 B
import { Arity1 } from '@typed/lambda'; import { Lens } from './Lens'; export interface PropLens<K extends PropertyKey> extends Lens<Readonly<Record<K, any>>, any> { readonly get: <R extends Readonly<Record<K, any>>>(r: R) => R[K]; readonly update: { <B, R extends Readonly<Record<K, B>>>(update: Arity1<B, B>, r: R): R; <B>(update: Arity1<B, B>): <R extends Readonly<Record<K, B>>>(r: R) => R; }; } export declare type PropLensKey<A> = A extends PropLens<infer K> ? K : never; export declare const fromProp: <K extends string | number | symbol>(key: K) => PropLens<K>; //# sourceMappingURL=PropLens.d.ts.map