如何用 ts 写一个更新对象值的函数?
下面代码会报 ts 错误,如何如何解决?
interface Type1 {
src: string | null;
blur: number;
mask: number;
}
const obj1: Type1 = {
src: null,
blur: 0,
mask: 0,
};
function updateObj1(key: keyof Type1, value: Type1[keyof Type1]) {
obj1[key] = value; // Type 'string | number | null' is not assignable to type 'never'.
}
回复
1个回答
test
2024-06-25
需要类型推导(infer)
interface Foo {
src: string | null;
mask: number;
}
const foo: Foo = {
src: null,
mask: 0,
}
function setFoo<K extends keyof Foo>(key: K, value: Foo[K]) {
foo[key] = value
}
setFoo('src', 'hello')
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容