是否可以递归地从Typescript中的关键对象获得强类型?
这是我的示例代码。
const test = {
name: 'abc',
author: {
email: 'abc@example.com',
url: 'http://example.com/'
}
}
type AType = keyof typeof test
type AObjectKeyToValue = {
[K in AType]: K // <- K is just the keys!
}
然后我想创建一个使用AObjectKeyToValue
类型的新变量,这样我就能从中获得电源自动完成功能。
const b: AObjectKeyToValue
b.
▾▾▾
name
author
正如您所看到的,我完全按照我的需要获得了自动完成功能。但是当我需要从author
孩子那里获得自动填充时,我的问题就出现了。
const b: AObjectKeyToValue
b.author.
▾▾▾
// Just string property. Can't find `email` and `url`
如何编写好的类型,以便在访问email
时获得url
和b.author.
个键?
答案 0 :(得分:1)
我们可以从值(在编译时确定)创建一个类型,并将其用于其他值:
let b: typeof test = ...;
b.author.email // will be of type "string"