UNPKG

immutable-class

Version:

A template for creating immutable classes

64 lines (63 loc) 1.73 kB
import { BaseImmutable } from './base-immutable'; export class Rider extends BaseImmutable { static fromJS(params) { return new Rider(BaseImmutable.jsToValue(Rider.PROPERTIES, params)); } constructor(params) { super(params); Object.defineProperty(this, "getName", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "changeName", { enumerable: true, configurable: true, writable: true, value: void 0 }); } } Object.defineProperty(Rider, "PROPERTIES", { enumerable: true, configurable: true, writable: true, value: [{ name: 'name', defaultValue: null }] }); BaseImmutable.finalize(Rider); export class Bicycle extends BaseImmutable { static fromJS(params) { return new Bicycle(BaseImmutable.jsToValue(Bicycle.PROPERTIES, params)); } constructor(params) { super(params); Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.name = params.name; } } Object.defineProperty(Bicycle, "PROPERTIES", { enumerable: true, configurable: true, writable: true, value: [ { name: 'name', validate: (n) => { if (n.toLowerCase() !== n) throw new Error('must be lowercase'); }, }, { name: 'fuel', defaultValue: 'turnip', possibleValues: ['potato', 'turnip'], }, ] }); BaseImmutable.finalize(Bicycle);