immutable-class
Version:
A template for creating immutable classes
69 lines (68 loc) • 2 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Bicycle = exports.Rider = void 0;
const base_immutable_1 = require("./base-immutable");
class Rider extends base_immutable_1.BaseImmutable {
static fromJS(params) {
return new Rider(base_immutable_1.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
});
}
}
exports.Rider = Rider;
Object.defineProperty(Rider, "PROPERTIES", {
enumerable: true,
configurable: true,
writable: true,
value: [{ name: 'name', defaultValue: null }]
});
base_immutable_1.BaseImmutable.finalize(Rider);
class Bicycle extends base_immutable_1.BaseImmutable {
static fromJS(params) {
return new Bicycle(base_immutable_1.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;
}
}
exports.Bicycle = Bicycle;
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'],
},
]
});
base_immutable_1.BaseImmutable.finalize(Bicycle);
;