0

I have two interfaces for two different objects

interface standardObject{
  propertyA: number;
  propertyB: number;
}

interface transformedObject{
  transformedPropertyA: number;
  transformedPropertyB: number;
}

I want to manipulate the values of object a

let objectA: standardObject = {
propertyA: 1,
propertyB: 2,
}

and map them to to object b with the interface of transformedObject.
So object b looks something like this:

let objectB: transformedObject= {
transformedPropertyA: 10,
transformedPropertyB: 20,
}

I want propertyA to mapped to transformedPropertyA and propertyB mapped to transformedPropertyB.
In Angular there is similar function for arrays.
Does something like this exist for objects?

Merna Mustafa
  • 1,235
  • 2
  • 10
  • 22

2 Answers2

0
let keys = Object.keys(objectA);
let objectB = {};
keys.forEach((key)=>{
let bProperty =`transformed${key}`
objectB[bProperty] = objectA[key]*10;
})
Zrelli Majdi
  • 1,204
  • 2
  • 11
  • 16
0

This would be an Angular good practice way to achive that:

export interface StandardObject{
  propertyA: number;
  propertyB: number;
}

export class TransformedObject implements standardObject {

  transformedPropertyA: number;
  transformedPropertyB: number;


constructor(standardObject: StandardObject) {

  this.transformedPropertyA = standardObject.propertyA * 10;
  this.transformedPropertyB= standardObject.propertyB* 10;

}

How to use it?:

let objectA: standardObject = {
propertyA: 1,
propertyB: 2,
}

const objectB = new TransformedObject(objectA);
console.log(objectB.transformedPropertyA); // 10
console.log(objectB.transformedPropertyB); // 20