Comment puis-je définir des modules dépendants dactylographiée Modules AMD

voix
6

Comment puis-je définir les modules dépendants dans un module AMD avec tapuscrit, y compris, par exemple, jQuery et soulignement. L'utilisation de JavaScript je faire, par exemple, comme ceci:

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

Comment faire de sorte que le compilateur génère tapuscrit ce code.

Créé 08/10/2012 à 14:44
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
3

Avec la mise en œuvre actuelle du compilateur (0,8) la façon d'obtenir ce que vous cherchez est le suivant.

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 vous compilez test.ts à l'aide du commutateur du module:

tsc --module AMD test.ts

il va générer le fichier JS pour vous:

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 = {}));
})

Notez que si vous mettez des déclarations d'importation à l'intérieur du module, il constatera codegen correctement en raison d'un bug. L'équipe travaille actuellement sur un correctif sur ce point, mais nous espérons que ne devrait pas vous bloquer.

Créé 08/10/2012 à 17:22
source utilisateur

voix
2

Cela ne fonctionne pas correctement actuellement dactylographiée en raison d'un bogue dans le compilateur (voir stackoverflow ). Ce que vous devez faire est de définir un module moduleAque les importations jqueryet underscore, puis compilent qu'avec -module amd. En gros, vous devez les trois fichiers suivants:

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";
}

Ces trois fichiers Compiler avec des tsc -module amdrendements le code suivant pour 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 = {}));

})

Comme je l' ai dit plus haut, en raison d'un bogue dans le compilateur, ce code est en fait incorrect et se plaindra de manquer __jquery__lors de l' exécution. Cependant, une fois que ce bug est corrigé le amdchargeur de node.jsdevrait pouvoir charger les modules.

Créé 08/10/2012 à 15:05
source utilisateur

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