1

我试图弄清楚如何创建一个 typescript setter 函数,该函数接受一个对象、该对象的键以及要在该键上分配的值。

这是我到目前为止所拥有的:

const setter = <T, K extends keyof T>(obj: T, key: K, value) => {
  obj[key] = value
}

const obj = {
  a: 1,
  b: 'two',
}

setter(obj, 'a', 2) // works fine
setter(obj, 'c', 3) // correctly fails since `obj` does not have a `c` prop
setter(obj, 'b', 4) // works but should not be possible

如何键入value与 at 的类型匹配的此函数T[K]

4

1 回答 1

2

当然,只需value键入T[K]

<T, K extends keyof T>(obj: T, key: K, value: T[K])
于 2019-10-17T15:44:26.620 回答