Javascript / Typescript сопоставляют свойства исходного объекта из более крупного объекта

1

У меня есть целевой класс, как это:

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
    вы не можете использовать наследование, чтобы BigPerson наследовал от Person ?
Теги:
typescript2.0

1 ответ

0

Это звучит как проблема JavaScript.

Поскольку интерфейсы являются просто типами, вы не можете использовать их во время выполнения.

Поэтому вам нужно создать конкретный объект, чтобы выбрать его у большого человека, однако это невозможно сделать с помощью деконструкции или распространения, мой лучший ответ - создать массив свойств и преобразовать их в объект.

const reduceToPerson = (sum, element) => {
    sum[element] = bigPersonObj[element];
    return sum;
});
const person = ["name", "age", ...].reduce(reduceToPerson, {});

Вы также можете сделать 30 свойств, как вы хотите

const {name, age, ...}: person = bigPersonObject;

Однако вы не можете действительно использовать этот код по сравнению с массивом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню