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

238
Vistas
¿Cómo evitar dependencias circulares en Javascript/Typescript?

¿Cuál es la mejor práctica para evitar dependencias circulares? Tuve este problema con Javascript pero también se aplica a cualquier otro lenguaje de programación.

Por ejemplo, tengo este módulo translationService.ts donde cada vez que se cambia una configuración regional, quiero volver a cargar la configuración (por lo que necesito importar settingsService.ts . Pero en mi settingsService.ts tengo una función reloadSettings que usa translationService para traducir el mensaje de error.

Supongo que se podría decir que el servicio de translationService no debería saber nada sobre el servicio de settingsService , pero ¿cómo se escribe realmente el código para lograrlo?

serviciodetraduccion.ts

 import { reloadSettings } from '@/services/settingsService.ts' // When the locale is changed, we want to reload the settings const changeLocale = (locale: string) => { i18n.locale = locale reloadSettings() }

Pero en mi settingsService.ts tengo una dependencia en translationService para mostrar la excepción en la configuración regional correcta.

settingsService.ts

 import settingsApi from '@/api/settingsApi.ts' import { translate } from '@/services/translationService.ts' const reloadSettings = () => { try { settingsStore.settings = settingsApi.getSettings() } catch (error) { console.log( translate(error.message) ) } }

Entonces termino con dependencias circulares donde settingsService depende de translationService y translationService depende de settingsService

settingsService -> translationService -> settingsService

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

0

En la mayoría de los casos como este, debe evitar el acoplamiento bidireccional eliminando al menos una dependencia y reemplazándola con un acoplamiento indirecto.

Toma tu ejemplo.

Pero en mi settingsService.ts tengo una función reloadSettings que usa el servicio de traducción para traducir el mensaje de error.

Suena correcto, su servicio de traducción parece estar en un nivel inferior. Mantenga esta dependencia como directa.

Tengo este módulo translationService.ts donde cada vez que se cambia una configuración regional, quiero volver a cargar la configuración (por lo que necesito importar settingsService.ts)

No, no tienes que tener una dependencia directa aquí.

Puede introducir fácilmente un emisor de eventos que simplemente emita un evento de cambio de configuración regional y el servicio de configuración simplemente se suscriba al evento.

No hay una dependencia directa, ambos dependen del emisor de eventos, pero aún así se comunican a través de eventos.

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