【发布时间】:2020-11-21 04:20:23
【问题描述】:
我正在尝试定义一个接口,其中:
- 一个属性是泛型类型的键
- 另一个属性依赖于与另一个属性中的键关联的 值 的类型
我能得到的最接近的方法是让 Typescript 将 T[K] 解析为 T 的所有值的联合类型。但如果 K 是已知的字符串文字,似乎应该有一些方法可以进一步缩小范围。
这是我正在尝试做的一个示例。
测试
interface Person {
age: number;
name: string;
}
interface ColumnDef<T, K extends keyof T> {
key: K;
renderData: (value: T[K]) => void;
}
interface Report<T> {
columns: ColumnDef<T, keyof T>[];
}
const report: Report<Person> = {
columns: [
{
key: "age", // this is correctly typed to be "age"|"name"
renderData: (value) => {
// ideally value should be "number" here, but it is "string|number"
}
},
{
key: "name", // this is correctly typed to be "age"|"name"
renderData: (value) => {
// ideally value should be "string" here, but it is "string|number"
}
},
]
}
【问题讨论】:
-
我坚信这个stackoverflow.com/questions/64744734/… 的答案会对你有所帮助。我什至会说,你的问题是重复的
-
这似乎是相关的。我会研究一下这个问题,看看我是否可以将其应用于我的情况。
-
你说得对,这正是我所需要的。感谢您为我指明正确的方向。
标签: typescript generics