1 | initial version |
The approach for mapping an object with nested objects/types in Typescript involves recursively iterating through the object's properties and mapping any nested objects/types as well. This can be accomplished using a combination of interfaces, classes, and helper functions.
interface Person {
name: string;
age: number;
address: {
street: string;
city: string;
state: string;
};
}
class PersonModel implements Person {
name: string;
age: number;
address: {
street: string;
city: string;
state: string;
};
constructor(person: Person) {
this.name = person.name;
this.age = person.age;
this.address = person.address ? new AddressModel(person.address) : null;
}
toJson(): object {
return {
name: this.name,
age: this.age,
address: this.address ? this.address.toJson() : null,
};
}
}
class AddressModel implements Address {
street: string;
city: string;
state: string;
constructor(address: Address) {
this.street = address.street;
this.city = address.city;
this.state = address.state;
}
toJson(): object {
return {
street: this.street,
city: this.city,
state: this.state,
};
}
}
function mapPerson(person: Person): object {
const personModel = new PersonModel(person);
return personModel.toJson();
}