类型安全地从字符串分配给键处的对象
Typesafe assign to object at key from string
我正在尝试弄清楚如何创建一个打字稿 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
与 T[K]
处的类型匹配?
当然可以,只需将 value
键入 T[K]
<T, K extends keyof T>(obj: T, key: K, value: T[K])
我正在尝试弄清楚如何创建一个打字稿 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
与 T[K]
处的类型匹配?
当然可以,只需将 value
键入 T[K]
<T, K extends keyof T>(obj: T, key: K, value: T[K])