No puedo imaginar si es posible tener un "módulo de exportación" distribuido entre varios archivos.¿Cómo distribuir el módulo entre múltiples archivos AMD?
Si tengo Contact.ts archivo:
// file Contact.ts
export module Contacts {
export class Contact {
...
}
}
y otros ContactView.ts
// file ContactView.ts
export module Contacts {
export class ContactView {
model: Contact; // <--- is not recognized
}
}
Entonces TSC no está reconociendo la clase de contacto. Como puede ver, se declara que Contact y ContactView residen en el mismo módulo y de acuerdo con la especificación debería funcionar.
Estoy construyendo una aplicación compuesta que usa los patrones require.js y AMD, así que TENGO que usar la declaración "exportar módulo".
¿Debo hacer algún tipo de "declaración anticipada" o alguna "importación" engañosa?
Gracias por el asesoramiento.
EDITAR: actualmente cargo cada módulo por separado a través de la importación, pero, si lo nota, crea una enorme pérdida de código y muchas dependencias de "importación". Mi pregunta era si hay una forma de usar el mismo espacio de nombres (es decir, Contactos) para saber el TS que no quiero importar. Estaba buscando el comando normal //, pero no funciona. Incluso probé los archivos de declaración * .d.ts sin éxito hasta el momento.
Esto es exactamente lo que hago ahora: cargar cada módulo por separado a través de la importación, pero, si lo notará, crea un enorme desperdicio de código y cientos de dependencias. Mi pregunta era si hay una forma de usar el mismo espacio de nombres (es decir, Contactos) para saber el TS que no quiero importar. Estaba buscando el comando normal //, pero no funciona. –
IgorM
En ese caso, no exporte los Contactos del módulo, simplemente defínalo como 'Contactos de módulo {...}' en todos sus archivos, use /// (esto funciona para módulos internos) para ayudar a TS búsquelos y cree un nuevo archivo para el módulo AMD que solo tiene 'export var contacts = Contacts;' en él para que pueda cargar todo a través de AMD. Deberá asegurarse de que la var que está exportando no tenga el mismo nombre que el módulo, de lo contrario, el código emitido no funcionará. Desafortunadamente no puedo escribir una demostración de código para esto en este momento, pero puedo hacerlo más tarde si es necesario. –
nxn
Pensando un poco más, es posible que necesite crear un archivo MAKE que emita cada módulo en su propio archivo JS. – nxn