Skip to content

webshrine / stdlib/src / pickDeepStrict

Function: pickDeepStrict()

pickDeepStrict<Input, Key>(object, keys): PickDeepRecursor<Input, Key>

Returns new object by specified keys.

  • Implements PickDeep utility type from library.
  • Executes recursively on nested collections.
  • Controls that received keys list is exists.

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

Returns

PickDeepRecursor<Input, Key>

Defined in

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