我有一个这样的目标类:
export interface person{
name: string;
age: string;
//and another 40 properties
}
我有一个更大的源对象,如:
export interface BigPerson{
name: string;
age: string;
//and another 100 properties
}
我的目标具有所有源属性,但只有一个(工资)。
如何使用JavaScript解构或散布运算符将源数据映射到目标?
我可以尝试类似的东西
let {personObj: person} = bigPersonObj
如果我使用通用属性,那么我必须编写30行代码
let {name,age,race,all my 30 properties} : ...bigPersonObj
是否存在使用传播或解构的快捷方式?
答案 0 :(得分:0)
这听起来像JavaScript问题。
由于接口只是类型,所以您不能在运行时使用它们。
因此,您需要创建一个具体的对象以从大人物那里挑选,但是这不能通过解构或传播来完成,我最好的答案是创建一个属性数组并将它们简化为一个对象。
const reduceToPerson = (sum, element) => {
sum[element] = bigPersonObj[element];
return sum;
});
const person = ["name", "age", ...].reduce(reduceToPerson, {});
您还可以按照自己的方式做30个属性
const {name, age, ...}: person = bigPersonObject;
但是,与数组相比,您不能真正重用此代码。