Ghost/ghost/offers/lib/domain/models/shared/ValueObject.js
Fabien O'Carroll 78be4b55c9 Moved ValueObject to domain/models/shared
no-issue

This is only ever used in this directory so it makes sense to be
colocated.
2021-10-08 12:23:40 +02:00

42 lines
663 B
JavaScript

/**
* @template T
*/
class ValueObject {
/** @type {{value: T}} */
props
/** @type T */
get value() {
return this.props.value;
}
/**
* @protected
* @param {T} value
*/
constructor(value) {
/** @private */
this.props = {value};
}
/**
* @param {any} other
* @returns {boolean}
*/
equals(other) {
if (this === other) {
return true;
}
if (other instanceof ValueObject) {
if (this.value === other.value) {
return true;
}
}
return false;
}
}
module.exports = ValueObject;