Javascript / Typescript映射较大对象的源对象属性

时间:2019-01-12 00:33:08

标签: javascript typescript2.0

我有一个这样的目标类:

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

是否存在使用传播或解构的快捷方式?

1 个答案:

答案 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;

但是,与数组相比,您不能真正重用此代码。