我有一个嵌套的数据结构,我想区分嵌套值和叶子值。
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