Saltar al contenido principal

Objetos de valor

Los objetos de valor son objetos que representan un valor, como un número de teléfono, un nombre o una fecha. Estos objetos son inmutables, es decir, una vez creados no pueden cambiar su estado. Por ejemplo una direccion de ethereum es un objeto de valor, ya que no puede cambiar su valor una vez creada.

Primitivos

Los objetos de valor encapsulan un valor primitivo, como un string, un número o un booleano. Se aseguran de que el valor encapsulado sea válido, por ejemplo, que un número de teléfono tenga el formato correcto. Y tambien de que el valor no sea null o undefined. Para crear un nuevo objeto de valor se utilizan las clases StringValueObject, NumberValueObject y EnumValueObject<T>. Todas extienden de la clase ValueObjet<Type>.

import { StringValueObject, NumberValueObject, EnumValueObject } from '@alfabc/sdk';

class Name extends StringValueObject {}

class Age extends NumberValueObject {}

enum GenderTypes {
Male,
Female
}

class UserGender extends EnumValueObject<GenderTypes> {}

Crear un nuevo objeto de valor primitivo

Para crear un nuevo objeto de valor de un tipo distinto a los primitivos, se debe extender de la clase ValueObject<Type>.

import { ValueObject } from '@alfabc/sdk';

class BirthDate extends ValueObject<Date> {}

new BirthDate(new Date('1990-01-01'));