2012-10-03 23 views
8

En AMD (como se aplica en RequireJS) módulos uno puede definido para ser incluido como dependencias, por ejemplo:mecanografiado compilar módulos AMD con requerida define

define(['require','exports'], function(require, exports) { 
    var externalDep = require('path/to/depModule'); 

    // Use the module somewhere. 
}); 

He intentado el amd --module y da salida correctamente una Módulo AMD utilizable por requirejs.

¿Es posible definir dependencias dentro del origen del archivo fuente TypeScript que se traduce en algo como el ejemplo anterior?

Respuesta

13

Necesita "exportar" sus módulos;

export module depModule { 
    export class A { 
    } 
} 

que transalate en código JavaScript que se parece a:

define(["require", "exports"], function(require, exports) { 
    (function (depModule) { 
     var A = (function() { 
      function A() { } 
      return A; 
     })(); 
     depModule.A = A; 
    })(exports.depModule || (exports.depModule = {})); 
}) 

y luego se consumen mediante el uso de "importación":

module otherModule { 
    import depModule = module('depModule'); 
    var a = new depModule.depModule.A(); 
} 

que se necesitan para especificar el tipo de la generación de tu código de módulo al compilador usando --module AMD.

+0

Buena respuesta, ¿puedes explicar cómo configurar Visual Studio con este parámetro de compilación? – Eric

+7

@Eric - Le sugiero que instale la extensión 'Web Essentials 2012' de Mads Kristensen. En la página de opciones de la extensión puede especificar que los archivos de TypeScript se compilen con la opción AMD. Puede descargarlo/encontrarlo aquí: http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6 –

+0

Se debe tener en cuenta que a partir de la versión 3.0, todo el soporte de TypeScript se ha eliminado de Web Essentials, ver el [change log] (http://vswebessentials.com/changelog). Esta funcionalidad debería estar disponible en Visual Studio eventualmente. – Chris

Cuestiones relacionadas