Ghost/ghost/offers/lib/domain/models/shared/ValueObject.js
Fabien O'Carroll c2f85d3742 Used isEqual to compare ValueObjects
no-issue

This ensures that ValueObjects can contain non-primitive types.
2021-10-14 14:56:37 +02:00

44 lines
719 B
JavaScript

const {isEqual} = require('lodash');
/**
* @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 (isEqual(this.props.value, other.props.value)) {
return true;
}
}
return false;
}
}
module.exports = ValueObject;