我正在尝试正确键入此函数:
function genRandom(keys) {
return keys.reduce(function (res, k) {
res[k] = Math.random()
return res
})
}
const x = genRandom(['a', 'b']) // has type {a: number, b: number}
我尝试this approach失败了。
答案 0 :(得分:0)
您只需要一个类型参数来保存键的并集。您定义的映射类型几乎等同于Record
function genRandom<K extends string>(keys: K[]): Record<K, number> {
return keys.reduce(function (res, k) {
res[k] = Math.random()
return res
}, {} as Record<K, number>)
}
const x = genRandom(['a', 'b']) // { a: number, b:number }