KeyPath: [SerializableKey, ...SerializableKey[]]

a key-path is an array of one or more string keys (number keys work too). they are not strongly typed with respect to whatever structure you are trying to traverse.

TODO: why not also permit symbols? one issue it might raise is the inability to convert a KeyPath to a DotPath.

const data = { kill: { your: { self: [0, 1, { 0: 0, 1: { noice: "YAHAHA", 0: "you found me!" } }] } } }
const possible_keypath: KeyPath = ["kill", "your", "self", 2, "1"]