给定以下数据结构
const mapA = {
a: 1,
b: 2,
c: 3,
}
const mapB = {
a: 1,
b: 2,
}
const maps = {
A: mapA,
B: mapB,
}
const func = (mapName: keyof typeof maps, prop: ?) => {
//
}
“?”中的 prop 类型应该怎么写?这样
func('A', 'c') // = 3
func('B', 'c') // throw Typescript error
我尝试了以下操作但失败了:
const func = <T extends keyof Maps>(mapName: T, prop: Maps[T]) => {
const value = maps[mapName][prop];
}
感谢您的帮助!
最佳答案
神奇的词是映射类型和键推断。
const func = <T extends keyof Maps, K extends keyof Maps[T]>(mapName: T, prop: K): Maps[T][K] => {
return maps[mapName][prop];
};
关于typescript - 如何创建第二个参数依赖于第一个参数的 Typescript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76008165/