UNPKG

froebel

Version:
19 lines (18 loc) 845 B
export declare const none: unique symbol; /** * Returns the value in `obj` at `path`. If the given path does not exist, * the symbol `none` is returned. * * @example * ``` * // -> 'something' * select( * { a: { deeply: [{ nested: { object: 'something' } }] } }, * 'a', 'deeply', 0, 'nested', 'object' * ) * ``` */ declare const select: <T, P extends AnyNarrow[]>(obj: T, ...path: P) => PickPath<T, P>; export default select; declare type AnyNarrow = string | number | symbol | boolean | undefined | null | Record<string | number | symbol, unknown>; declare type PickPath<T, P extends unknown[]> = P extends [] ? T : T extends Map<infer K, infer V> ? (P[0] extends K ? V | typeof none : typeof none) : P[0] extends keyof T ? PickPath<T[P[0]], P extends [unknown, ...infer R] ? R : []> : unknown extends T ? unknown : typeof none;