首页 > 解决方案 > 打字稿:你能递归地输入一个对象吗

问题描述

我想让打字稿递归地推断对象键的类型及其子对象的键。例如给出下面的声明:

const o:A<X> = {
  a:'1',
  b: {
    c: '2'
  }
}

我想A这样X定义"a"|"b"|"c"。使用keyof我可以让 Typescript 推断第一层(即X = "a"|"b")但不能推断后续层。是否可以让 Typescript 推断孙节点的键类型?

标签: typescripttypes

解决方案


尝试这个:

type A<X extends string|number> = {
  [id in X]?: string | A<X>
}

推荐阅读