ValueObject.ts 433 B

123456789101112131415161718
  1. /* istanbul ignore file */
  2. import { ValueObjectProps } from './ValueObjectProps'
  3. export abstract class ValueObject<T extends ValueObjectProps> {
  4. public readonly props: T
  5. constructor(props: T) {
  6. this.props = Object.freeze(props)
  7. }
  8. public equals(vo?: ValueObject<T>): boolean {
  9. if (vo === null || vo === undefined) {
  10. return false
  11. }
  12. return JSON.stringify(this.props) === JSON.stringify(vo.props)
  13. }
  14. }