@cmind/class-mapper
v0.0.14
Published
Class mapper consist of several decorators and two functions: box(), unbox(). You use box to convert your class to raw JS object. And unbox() to convert JS object and its nested properties to the instances of specified classes.
Downloads
20
Maintainers
Readme
@cmind/class-mapper
Class mapper consist of several decorators and two functions: box(), unbox(). You use box to convert your class to raw JS object. And unbox() to convert JS object and its nested properties to the instances of specified classes.
Install
npm i --save @cmind/class-mapper
Usage
class Person {
@number()
id: number;
@string()
name: string;
@boolean()
enabled: boolean;
displayName: string;
constructor(id: number, name: string, enabled = true) {
this.id = id;
this.name = name;
this.enabled = enabled;
}
}
class Organization {
@number()
id: number;
@array(Person)
employees: Person[];
}
const raw = {
id: '3591',
employees: [{
id: 1,
name: 'John',
enabled: true
}, {
id: 2,
name: 'Jack',
enabled: true
}]
};
const organization = unbox<Organization>(raw, Organization);
console.log(organization instanceof Organization); //true
console.log(organization.id === 3591); //true
console.log(organization.employees[0] instanceof Person); //true
const rawOrganization = box<Organization>(organization);
Decorators:
any(); // no conversion
number(); // convert input value to number (+value)
string(); // convert input value to string (value.toString())
boolean(); // convert input value to boolean (!!value)
object(cls: new() => any); // unbox input value to cls
array(cls: new() => any); // create array and unbox input each element of input value to cls
skipBoxing(); // Skip field on boxing
skipUnboxing(); // Skip field on unboxing