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?
CodePudding user response:
let keys = Object.keys(objectA);
let objectB = {};
keys.forEach((key)=>{
let bProperty =`transformed${key}`
objectB[bProperty] = objectA[key]*10;
})
CodePudding user response:
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
