Typescript:接受字符串数组并返回其键为输入值的对象的函数

时间:2018-10-12 12:05:47

标签: typescript

我正在尝试正确键入此函数:

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失败了。

1 个答案:

答案 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 }