Skip to content

Creekmind/class-mapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@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 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published