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

Jas*_*son 0 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
}
Run Code Online (Sandbox Code Playgroud)

Pri*_*dam 5


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

Run Code Online (Sandbox Code Playgroud)