如何使用参数中的keyof值基于接口定义另一个参数的类型

时间:2020-09-17 11:57:50

标签: typescript

如果您有一个简单函数,其中一个参数是接口的键,而另一个参数则基于该键。您如何键入值以强制键入而不使用任何值?

interface Config {
    name?: string
    ttl?: number
}

const config: Config = {}

function setConfig(
    key: keyof Config,
    // What typing is needed here to avoid any type
    // This should be either string or number depending on the value of key
    val: any
) {
    config[key] = val
}

1 个答案:

答案 0 :(得分:2)


function setConfig<K extends keyof Config>(key: K, val: Config[K]) {
  config[key] = val
}