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
>