Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

88
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda