Машинопись: исключить значения из возможных ключей - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть вложенная структура данных, и я хотел бы отличить вложенные значения от конечных значений.

interface Leaf {
   isOk: boolean
}
type ExcludedKeys = Exclude<string, keyof Leaf>;
interface Node {
  [key: not in ExcludedKeys]: Node | Leaf
}

// this is valid
const okay = { foo: { bar: { isOk: true }, zed: { isOk: true} }}
// this is not, because isOK key only appears in leafs
const failing = { isOk: { foo: { isOk: true } } }

Возможно, это уже задавалось, но я не могу найти дубликаты.

not in EcludedKeys не существует, но он суммирует то, что я пытаюсь достичь.

Есть идеи, как я мог бы реализовать это?

Я могу немного изменить структуру данных, но в настоящее время она оптимальна для потребления, я могу написать get(myObject, "foo.bar.isOk", false) для очень простого доступа к листу, например.

Пример использования:

console.log(okay.foo.bar)
okay.foo.bar.isOk = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...