Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

98
Vistas
La mejor manera de implementar el estado de anulación de datos de la clase principal

Estoy enfrentando un problema realmente difícil. Quiero crear una clase contenedora que pueda hacer algo como "anular" el estado del niño sin afectar el estado del niño. Bastante difícil de entender, lo sé.

Veamos un código mínimo a continuación:

 class State{ key: string; //Unique key //This is really complex, nested, array, etc state. value: number | string | State | State[] | any } class Child{ state : State; } class Wrapper{ overrideState: State; child: Child; constructor(child: Child){ this.child = child; } getFinalState() : State{ //This will return the new State (or not), that is the final state } }

Una función para llamarlos:

 function client(){ let child = new Child(); child.state = new State(); child.state.value = {} child.state.value.a = "a value original"; child.state.value.b = "b value original"; let parent = new Wrapper(child); parent.overrideState = new State(); parent.overrideState.value = {} parent.overrideState.value.a = "overrided" parent.overrideState.value.c = "c overrided" console.log(parent.getFinalState().value.a); //It should be `overrided`, console.log(child.state.value.a); //It should still `a value original`, console.log(parent.getFinalState().value.b); //It should be `b value original`, console.log(parent.getFinalState().value.c); //It should be `undefined` because c is not exists in `Child`, }

El problema es que la clase de State es realmente compleja.

En realidad, casi terminé con la función getFinalState usando bucles, comprobando el tipo, Lodash.cloneDeep ,... un montón de código. Y creo que es realmente complejo de mantener, difícil de leer y tal vez tiene algún riesgo.

No creo que mi camino sea el correcto, trato de investigar algunos patrones de diseño pero sigo atascado. Si tienes alguna idea, palabras clave o algo así. Realmente aprecio eso. Gracias

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda