У меня есть вложенная структура данных, и я хотел бы отличить вложенные значения от конечных значений.
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