我最近付出了很大的努力来找到一种方法来访问一个类型或接口的一个属性,比如说
propA
,到另一个相同类型或接口的属性,比如说propB
,这样我就可以进行取决于 propA
值的类型推断。
请注意,受歧视的联合在这里不起作用,因为
propA
的类型实际上是 Record<string, any>
,即它的键是动态的并且不是预定义的。除非我遗漏了什么。
这是我的想法的一个例子:
type MyType = {
propA: Record<string, any>;
propB: keyof MyType["propA"]
}
const example: MyType = {
propA: {
name: "Jay",
age: 20,
},
propB: "name" // must be either "name" or "age"
}
这可能吗?
你必须使用泛型,因为
Record<string, any>
“忘记”更具体的给定类型:
type MyType<T extends Record<string, any>> = {
propA: T;
propB: keyof T
}
const example: MyType<{ name: "Jay", age: 20 }> = {
propA: {
name: "Jay",
age: 20,
},
propB: "name" // must be either "name" or "age"
};