typescript - Cómo usar importaciones entre espacios de trabajo
Error TS6202: Las referencias del proyecto no pueden formar un gráfico circular.
Mi estructura: -paquetes --utilidades --api
utils/tsconfig.json
...
references: [../api/src]
api/tsconfig.json
...
references: [../utils/src]
Necesito usar utilidades en el paquete api y usar algunas api en las utilidades
Respuesta #1
Las dependencias circulares suelen ser una señal de que tu arquitectura aún no es sólida.
Prueba uno o varios de los siguientes:
- Crea un tercer paquete, del cual dependan ambos y eleva las cosas necesarias para ambos a la capa superior.
- Agrega una abstracción adicional. Si, por ejemplo, la clase "A" (de la API) necesita la clase "U" (de util) y la clase U también necesita la clase A, crea una interfaz para las partes más relevantes de la clase más general. Por tu nombre, util probablemente no debería depender de la API.
ejemplo :
// in api
class A {
constructor(private u: U) {}
fancyMethod() {}
}
// in util
class U {
constructor(private a: A) {}
}
En este entorno A de la API depende de U de util y viceversa. Para resolver esto, crea una Interfaz que describa la funcionalidad requerida desde el punto de vista de U y haz que dependa de eso:
// in api
class A implements FancyIf{
constructor(private u: U) {}
fancyMethod() {}
}
// in util
interface FancyIf {
fancyMethod(): void;
}
class U {
constructor(private a: Fancy) {}
}
De esta manera, util no necesita depender de api, sino que define lo que necesita para operar proporcionando una interfaz. La clase más específica A de api luego implementa la interfaz para indicar que puede cumplir con las necesidades de la clase U.
Pista: También piensa en conceptos como la inyección de dependencias.
