¿Cómo puedo definir módulos dependientes en los módulos de AMD mecanografiado

votos
6

¿Cómo puedo definir los módulos dependientes en un módulo de AMD con el texto mecanografiado, incluyendo, por ejemplo, jQuery y subrayado. Uso de JavaScript que hacer, por ejemplo, así:

define('moduleA',
    ['jquery', 'underscore'], function ($, _) {
    }
});

¿Cómo se puede hacer esto para que el compilador genera el código mecanografiado.

Publicado el 08/10/2012 a las 14:44
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
3

Con la implementación actual del compilador (0.8) de la manera de lograr lo que está buscando es el siguiente.

test.ts:

import jquery = module("jquery");
import underscore = module("underscore");

export module A {
    console.log(jquery.$ + underscore._);
}

jquery.ts:

export var $ = null;

underscore.ts:

export var _ = null;

si compila test.ts con el interruptor del módulo:

tsc --module AMD test.ts

se generará el siguiente archivo JS para usted:

define(["require", "exports", "jquery", "underscore"], function(require, exports, __jquery__, __underscore__) {
    var jquery = __jquery__;
    var underscore = __underscore__;
    (function (A) {
        console.log(jquery.$ + underscore._);
    })(exports.A || (exports.A = {}));
})

Tenga en cuenta que si se pone las declaraciones de importación dentro del módulo que advertirá codegen correctamente debido a un error. El equipo está trabajando actualmente en un arreglo sobre ese tema, pero es de esperar que no se debe bloquear.

Respondida el 08/10/2012 a las 17:22
fuente por usuario

votos
2

Esto actualmente no funciona correctamente a máquina debido a un error en el compilador (ver stackoverflow ). Lo que tendría que hacer es definir un módulo moduleAque las importaciones jqueryy underscorey, a continuación, compilar que con -module amd. Básicamente, lo que se necesita los tres archivos siguientes:

moduleA.ts

export module moduleA {
    import jquery = module("jquery");
    import underscore = module("underscore");
    console.log(jquery.jquery);
    console.log(underscore.underscore);
}

jquery.ts

export module jquery {
    var jquery = "jquery";
}

underscore.ts

export module underscore {
    var underscore = "underscore";
}

La compilación de los tres archivos con tsc -module amdrendimientos el siguiente código para moduleA.js:

define(["require", "exports"], function(require, exports) {
    (function (moduleA) {
        var jquery = __jquery__;

        var underscore = __underscore__;

        console.log(jquery.jquery);
        console.log(underscore.underscore);
    })(exports.moduleA || (exports.moduleA = {}));

})

Como he dicho anteriormente, debido a un error en el compilador, este código es realmente incorrecto y se quejan de falta __jquery__en tiempo de ejecución. Sin embargo, una vez que este error se corrige el amdcargador de node.jsdebe ser capaz de cargar los módulos.

Respondida el 08/10/2012 a las 15:05
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more