【发布时间】:2021-06-16 02:50:51
【问题描述】:
const obj = {
a: 1,
b: 'foo',
};
for (const k of (Object.keys(obj) as (keyof typeof obj)[])) {
obj[k] = obj[k];
}
我明白了:
Type 'string | number' is not assignable to type 'never'.
Type 'string' is not assignable to type 'never'.
obj 每个键都有不同的值类型,我想维护每个键的值类型。换句话说,我希望obj.a 保持number 和obj.b 保持string。我假设发生此错误是因为 TS 预计 obj[k] 的类型为 string | number。
有没有办法让 TS 为每个键保持正确的值类型?
【问题讨论】:
-
为什么不使用
Object.assign。像这样:Object.assign(obj, {a:20});或Object.assign(obj, {a:20, b:"another foo"});
标签: javascript typescript