Type Alias KeyPathValue<T, KP>

KeyPathValue<T, KP>: KP extends [KP[0], ...(infer R)]
    ? R extends KeyPath
        ? KeyPathValue<T[KP[0]], R>
        : T[KP[0]]
    : unknown

get the type of nested data through the use of an array of key-path

Type Parameters

  • T extends {
        [key: string | number]: any;
    }
  • KP extends KeyPath
const data = { kill: { your: { self: [0, 1, { 0: 0, 1: { noice: "YAHAHA", 0: "you found me!" } }] } } }
const keypath_to_noice_parent: ["kill", "your", "self", 2, 1] = ["kill", "your", "self", 2, 1]
const noice_parent: KeyPathValue<typeof data, typeof keypath_to_noice_parent> = { noice: "YAHAHA", 0: "you found me!" }