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
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[]>