Skip to main content

@recative/lens

Index

Type Aliases

DotNotation

DotNotation<T>: DotNotationImplementation<T, keyof T> | keyof T

Type parameters

  • T

DotNotationValue

DotNotationValue<T, P>: P extends `${infer K}.${infer Rest}` ? K extends keyof T ? Rest extends DotNotation<T[K]> ? DotNotationValue<T[K], Rest> : never : never : P extends keyof T ? T[P] : T extends ArrayLike<infer E> | Readonly<ArrayLike<infer E>> ? P extends `${number}` ? E : number : never

Type parameters

LensResult

LensResult<T, P, U>: U extends true ? P extends string ? P extends DotNotation<T> ? DotNotationValue<T, P> : never : P extends string[] | Readonly<string[]> ? PathValue<T, P> : P extends number ? T extends ArrayLike<infer E> | Readonly<ArrayLike<infer E>> ? E : never : P extends symbol ? P extends keyof T ? T[P] : never : never : P extends keyof T ? T[P] : never

Type parameters

  • T
  • P
  • U

ValidDotNotation

ValidDotNotation<T>: T extends `${string}.${string}` ? true : false

Type parameters

  • T

ValidLensField

ValidLensField: string | number | symbol | undefined | string[] | Readonly<string[]>

ValidSimpleLensField

ValidSimpleLensField: string | number | symbol