我正在try 循环一个对象的属性,并覆盖相同类型的现有对象. 它可以在运行时运行,但TypeScrip说:
pet2[key]: Type 'string | number' is not assignable to type 'never'.ts(2322)
个
type Pet = { name: string; age: number };
const pet1: Pet = { name: 'Speedy', age: 4 };
const pet2: Pet = { name: 'Bibi', age: 5 };
// overwrite manually - no typescript error:
pet2['name'] = pet1['name'];
pet2['age'] = pet1['age'];
// overwrite with a loop - typescript error:
const keys = Object.keys(pet1) as Array<keyof Pet>;
for (const key of keys)
pet2[key] = pet1[key];
我怎样才能用循环来实现这一点,这样Typescript 就不会抱怨了?
在我看来,TypeScrip会判断赋值右侧的所有可能类型(字符串|数字),然后try 组合左侧的所有属性(字符串和数字),然后得出结论:(字符串|数字)不适合(从不).
编辑: 这只是我的问题的一个简化版本.我一次又一次地遇到这个问题.今天,我在一家超薄store 订阅了它:
for (const filterColum of filterColumns)
selected[filterColum].subscribe(($value) => { $selected[filterColum] = $value })