打字稿:从可能的键中排除值

时间:2020-04-28 13:11:17

标签: typescript

我有一个嵌套的数据结构,我想区分嵌套值和叶子值。

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

0 个答案:

没有答案