immutable-class
Version:
A template for creating immutable classes
64 lines (63 loc) • 1.73 kB
JavaScript
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);