【发布时间】:2020-04-20 07:20:15
【问题描述】:
我想让打字稿递归地推断对象键的类型及其子对象的键。例如给出下面的声明:
const o:A<X> = {
a:'1',
b: {
c: '2'
}
}
我想定义A 以便X 将是"a"|"b"|"c"。使用 keyof 我可以让 Typescript 推断第一层(即X = "a"|"b"),但不能推断后续层。是否可以让 Typescript 推断出孙节点的键类型?
【问题讨论】:
-
如果您尝试获取像
const o = {a:'1', b: {c: '2'}}这样的对象并使用像DeepKeyof<typeof o>这样的类型函数,则计算结果为"a"|"b"|"c",那么这是Keyof nested child objects 的副本。另一方面,如果您尝试定义一个类型A使得o可分配给类型A<"a"|"b"|"c">那么@bsapaka 下面的答案将适用。你要哪一个? -
@jcalz:感谢您的澄清。主要是我对前者感兴趣,但两者都很有用。
标签: typescript types