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

155
Vistas
Abortar en el constructor

En JavaScript y/o TypeScript, ¿cuál es el enfoque común para resolver el siguiente problema?

Supongamos que tenemos una clase cuyo constructor depende de alguna operación. Si esa operación falla, la instancia no debe crearse.

Ejemplo:

 class Item { constructor(itemId) { // Try to get the data for the passed-in item id const itemData = itemDataMap.get(itemId); // If the item data was found if (itemData) { // Great, continue to init the instance as normal... } else { // Problem: We can't init the instance without the item data. // Hence we don't want to return an instance. // What should we do here? } } }

Las soluciones que se me ocurren incluyen tratar de devolver un objeto vacío o arrojar un error. Pero, ¿hay un enfoque común/preferido?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Personalmente, me gusta tener constructores puros sin efectos secundarios. Simplemente pasa datos y crea su objeto. Es mucho más fácil de usar, probar y depurar.

Y si desea tener un efecto secundario (como validación, obtención de datos), cree una función estática en el objeto que será responsable de eso.

Otra cosa buena es que puede convertir esa función en una función asíncrona sin ningún problema (los constructores no pueden ser asíncronos).

 class Item { constructor(data) { //... } static create(id) { if (id === 1) { throw new Error("my error") } return new Item({ id }) } } console.log(Item.create(2)) console.log(Item.create(1))

about 4 years ago · Juan Pablo Isaza Denunciar
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