@cmind/class-mapper
TypeScript icon, indicating that this package has built-in type declarations

0.0.14 • Public • Published

@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 

Package Sidebar

Install

npm i @cmind/class-mapper

Weekly Downloads

1

Version

0.0.14

License

MIT

Unpacked Size

44.8 kB

Total Files

29

Last publish

Collaborators

  • creekmind