importEntityfrom'entity-class';constentity=newEntity({name: 'John',last_name: 'Carpenter'});console.log(entity.get('name'));// returns name
Made to be extended
importEntityfrom'entity-class';interfaceIUser{name: string;age: number;last_name: string;}classUserextendsEntity<IUser>{getName(){returnthis.get('name');}getLastName(){returnthis.get('last_name');}getAge(){returnthis.get('age');}getFullName(){return`${this.getName()}${this.getLastName()}`;}isAdult(){returnthis.getAge()>21;}}constuser=newUser({name: 'John',age: 12,last_name: 'Carpenter'});console.log(user.getFullName()): // returns full name of user
Full support for typescript
importEntityfrom'entity-class';interfaceIUser{name: string;last_name: string;age?: number;}classUserextendsEntity<IUser>{getName(){returnthis.get('name');}getLastName(){// : stringreturnthis.get('last_name');}getAge(){// : number | undefinedreturnthis.get('age');}getFullName(){return`${this.getName()}${this.getLastName()}`;}}constuser=newUser({name: 'John',});// Will indicate error:// Argument of type '{ name: string; }' is not assignable to parameter of type 'IUser'.// Property 'last_name' is missing in type '{ name: string; }' but required in type 'IUser'