Skip to content

Latest commit

 

History

History
44 lines (39 loc) · 1.51 KB

File metadata and controls

44 lines (39 loc) · 1.51 KB

Home > types-kit > InternalDeepReplacePick

InternalDeepReplacePick type

Signature:

type InternalDeepReplacePick<
  T,
  KeysArr extends readonly unknown[],
  ValuesArr extends readonly unknown[],
> = {
  [P in keyof T]: InternalDeepReplacePickValue<
    P,
    T[P],
    KeysArr,
    ValuesArr
  > extends [infer Res, infer V]
    ? Res extends true
      ? V
      : V extends V
      ? IsObject<V> extends true
        ? // get filter keys and values
          InternalDeepReplacePickKeys<P, KeysArr, ValuesArr> extends [
            infer ResultKeys,
            infer ResultValues,
          ]
          ? ResultKeys extends readonly unknown[]
            ? ResultValues extends readonly unknown[]
              ? IsEmptyTypeArray<ResultKeys> extends true
                ? V
                : InternalDeepReplacePick<V, ResultKeys, ResultValues>
              : never
            : never
          : never
        : V
      : never
    : never
}

References: InternalDeepReplacePickValue, IsObject, InternalDeepReplacePickKeys, IsEmptyTypeArray, InternalDeepReplacePick