types-kit.internaldeepreplacepickkeys.md

September 4, 2023 ยท View on GitHub

Home > types-kit > InternalDeepReplacePickKeys

InternalDeepReplacePickKeys type

Signature:

type InternalDeepReplacePickKeys<
  Key,
  KeysArr extends readonly unknown[],
  ValuesArr extends readonly unknown[],
  ResultKeys extends readonly unknown[] = [],
  ResultValues extends readonly unknown[] = [],
> = KeysArr extends [KeysArr[0], ...infer RestKeys]
  ? ValuesArr extends [ValuesArr[0], ...infer RestValues]
    ? KeysArr[0] extends `${infer Head}.${infer Tail}`
      ? Key extends Head
        ? InternalDeepReplacePickKeys<
            Key,
            RestKeys,
            RestValues,
            [...ResultKeys, Tail],
            [...ResultValues, ValuesArr[0]]
          >
        : InternalDeepReplacePickKeys<
            Key,
            RestKeys,
            RestValues,
            ResultKeys,
            ResultValues
          >
      : // no first level
        InternalDeepReplacePickKeys<
          Key,
          RestKeys,
          RestValues,
          ResultKeys,
          ResultValues
        >
    : [ResultKeys, ResultValues]
  : [ResultKeys, ResultValues]

References: InternalDeepReplacePickKeys