La guía o código que verás en este artículo es la solución más sencilla y efectiva que encontramos a esta inquietud o problema.
Solución:
Dos soluciones a continuación. Prefiero este último ya que ofrece una interfaz limpia con los módulos de Node JS, pero desafortunadamente a mi IDE (todavía) no le gusta tanto como a mí…
Usar referencias
Crear un definitions.d.ts
archivo que solo contendrá las referencias a sus clases/interfaces
///
///
En Parent.ts
y Child.ts
apuntan a una sola referencia, el definitions.d.ts
expediente
///
Usar importar… requerir
pasa el --module commonjs
bandera a tsc
entonces import
lo que tu require
y export
lo que quieres exponer
En Parent.ts
import Child = require('Child')
interface Parent
children: Child[]
export = Parent
En Niño.ts
import Parent = require('Parent')
interface Child
parent: Parent
export = Child
Tenga en cuenta que no especifica la extensión ‘.ts’ en require
Tengo alrededor de 10 archivos ts, en un Circular-Dependency-Hell.
Los métodos comunes ya no me pueden ayudar, porque la relación de dependencia entre 10 archivos es demasiado compleja.
Al final, lo resolví. Usando los siguientes 2 métodos:
-
Instalar repositorio ———— “circular-dependency-plugin”: “5.0.2”
Este repositorio me ayudará a encontrar el lugar donde ocurre la circular.
-
Usando un internal.ts diseñado, para administrar mi importación y exportación
Probé el método de este artículo:
Cómo solucionar problemas desagradables de dependencia circular de una vez por todas en JavaScript y TypeScript
Este increíble artículo me dice que cree internal.ts.
y usando como
export * form 'file-A' ; export * from 'file-B'
para administrar mis dependencias circulares.Funciona muy bien cuando uso dependencias relacionadas con mis 10 archivos, como este
import classA from '../internal.ts'
.
————————————————————————————————————
Si el método anterior no te afecta, encontré otra solución general:
Usar
const File_Promise = import ('yourFilePath')"
para importar otro archivo o módulo.
cuando necesite usar este, use
File_Promise.then (file => file.xxx(file.yyy) )
, al igual que usar la sintaxis de Promise. `
¡Esto romperá la Cadena Circular-Dep!
Si soy tú, continuaré esta acción hasta que NO HAY ERROR Reportado por “circular-dependency-plugin”.
————————————————————————————————————
¡Espero ayudarte!
Yo también me enfrenté a una situación similar.
Podría resolver usando import type
.
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html
Comentarios y valoraciones
Puedes sustentar nuestro análisis fijando un comentario y dejando una puntuación te lo agradecemos.