Búsqueda de sitios web

javascript - Ordenador de dependencias para TypeScript


Tengo problemas con las dependencias en TypeScript. ¿Cómo ordenarlas para que todo funcione? ¿Hay alguna herramienta para eso?

El problema se ve así... Tengo 2 módulos:

module Module1 {
   export class A {
   }

   export class B {
   }
}

module Module2 {
   export class C {
   }

   export class D {
   }
}

Module1 usa clases de Module2 y Module2 usa clases de Module1. Así que hay una especie de ciclo aquí (en los módulos). Ahora, cuando lo compilo a JavaScript obtengo un error:

Microsoft JScript runtime error: 'Module2' is undefined

Sucede, porque la referencia Module2 JS debería incluirse antes que Module1. ¿Cómo resolver el problema, cuando tengo tales ciclos? ¿Es posible?

Respuesta #1

Tengo un complemento de grunt específicamente para este propósito: https://github.com/basarat/grunt-ts#javascript-generation-and-ordering

También mira el tutorial en video: http://www.youtube.com/watch?v=0-6vT7xgE4Y&hd=1

Respuesta #2

En la Programación Orientada a Objetos ayuda tener las dependencias fluyendo en una sola dirección. Tener el Módulo1 dependiendo del Módulo2 y también el Módulo2 dependiendo del Módulo1 causará problemas incluso en lenguajes que permiten dependencias circulares.

Deberías poder resolver el problema teniendo un Módulo3 que dependa tanto del Módulo1 como del Módulo2, sin dependencias en el Módulo3. En el ejemplo, he asumido que B depende de C y D depende de A:

module Module1 {
   export class A {
   }
}

module Module2 {
   export class C {
   }
}

module Module3 {
   export class B {
   }

   export class D {
   }
}

Otra solución podría ser aceptar que si estos dos módulos tienen tantas dependencias, probablemente deberían ser un solo módulo.

module Module1 {
   export class A {
   }

   export class B {
   }

   export class C {
   }

   export class D {
   }
}