Estoy tratando de crear dos paquetes con mecanografiado (o más bien, convertirlos a mecanografiado. Originalmente se escribieron en javascript).
La forma en que estos paquetes se comunican está diseñada así:
El paquete principal inicia un servidor y luego carga diferentes extensiones. Todas estas extensiones son paquetes que exportan una clase que extiende base_extension (el segundo paquete).
Entonces, cuando mis usuarios desean crear una extensión, simplemente pueden iniciar un nuevo paquete, instalar el módulo base_extension, importarlo y extenderlo desde la exportación predeterminada. Fácil, ¿verdad?
Pero ahora con mecanografiado me enfrento a un problema:
Mi clase BaseExtension tiene un servidor de propiedades que se establece después de que el servidor haya cargado la extensión. En mi archivo mecanografiado, por supuesto, quiero usar tipos en lugar de simplemente "cualquiera", así que instalo mi paquete principal , importo el tipo Servidor y lo defino. No hay problema hasta ahora.
Pero en mi Paquete principal , también estoy haciendo referencia a las extensiones, por lo que necesito escribir para BaseExtension, porque todas las extensiones comparten una interfaz común (de ahí la herencia). Pero ahora, cuando intento crear cualquiera de los paquetes (con exportación de declaración), aparece el siguiente error:
error TS5055: Cannot write file '<main_package>/lib/core/extensions/manager.d.ts' because it would overwrite input file.Supongo que este error se origina cuando construyo una referencia circular. Porque el archivo 'manager.d.ts' mencionado es necesario para escribir el paquete base_extension , que a su vez es necesario para escribir el paquete principal .
¿Hay una forma correcta de lidiar con este problema?
Intenté eliminar la carpeta lib existente cada vez antes de compilar, lo que evita el error porque elimina la referencia circular. Pero eso es muy inconveniente porque la opción de reloj no funcionará. ¿Algunas ideas?