Skip to content

webshrine / stdlib/src / pickDeep

Function: pickDeep()

pickDeep<Input, Key>(object, keys): PickDeep<Input, Key>

Returns new object by specified keys.

  • Implements PickDeep utility type from library.
  • Executes recursively on nested collections.

Type Parameters

Input extends Collection

Key extends string = Input extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<I, Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<...[...], Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<... & ...[D], Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<...[...], Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<Record<..., ...> & Extract<..., ...>[D], Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<I, Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : Extract<... & ...[D], Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : never : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<Record<D, any> & Extract<I, Collection<..., ...>>[D], Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<I, Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : never : Extract<Record<..., ...> & Extract<..., ...>[D], Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<...[...], Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : never : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<Record<D, any> & Extract<I, Collection<any, CollectionKey>>[D], Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<I, Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<...[...], Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : never : Extract<Record<D, any> & Extract<I, Collection<..., ...>>[D], Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<Extract<..., ...>[D], Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<...[...], Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : never : never : Input extends Record<D, any> ? StringifyKey<D> | Extract<Input<Input>[D], Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<I, Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<...[...], Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : never : Extract<I, Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<... & ...[D], Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<...[...], Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : never : Extract<Input<Input>[D], Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<Extract<...[...], Collection<..., ...>>[D], Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<any, CollectionKey>> extends readonly I[] ? Extract<I, Collection<..., ...>> extends readonly I[] ? Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : Extract<..., ...> extends Record<..., ...> ? ... | ... : never : Extract<I, Collection<..., ...>> extends Record<D, any> ? StringifyKey<...> | ... extends ... ? ... : ... : never : Extract<Extract<..., ...>[D], Collection<any, CollectionKey>> extends Record<D, any> ? StringifyKey<D> | Extract<..., ...> extends readonly ...[] ? ... extends ... ? ... : ... : ... extends ... ? ... : ... : never : never : never

Parameters

object

Input

keys

readonly MaybeLiteral<Key>[]

Returns

PickDeep<Input, Key>

Defined in

packages/stdlib/src/transformers/pickers.ts:53