Cum pot defini module dependente dactilografiat AMD Module

voturi
6

Cum pot defini modulele dependente într-un modul AMD cu typescript, inclusiv, de exemplu, jQuery și subliniere. Utilizarea JavaScript Eu fac, de exemplu, ca aceasta:

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

Cum se poate face acest lucru, astfel încât compilator typescript generează acest cod.

Întrebat 08/10/2012 la 14:44
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
3

Odată cu implementarea curentă a compilatorului (0,8), modul de a realiza ceea ce caută este următoarea.

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;

dacă ați compila test.ts folosind comutatorul modulului:

tsc --module AMD test.ts

acesta va genera următorul fișier JS pentru tine:

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

Rețineți că, dacă pui declarații de import în interiorul modulului se va nota Codegen corect din cauza unei erori. Echipa lucreaza in prezent la un fix pe acel element, dar sperăm că nu ar trebui să blocheze.

Publicat 08/10/2012 la 17:22
sursa de către utilizator

voturi
2

În prezent , acesta nu funcționează corect în dactilografiate din cauza unei erori în compilator ( a se vedea StackOverflow ). Ceea ce ar trebui să faceți este să definească un modul moduleAcare importurile jqueryși underscore, apoi compila asta cu -module amd. Practic, ai nevoie de următoarele trei fișiere:

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

Compilarea cele trei fișiere cu tsc -module amdrandamente următorul cod pentru 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 = {}));

})

Așa cum am spus mai sus, din cauza unei erori în compilator, acest cod este de fapt incorect și se va plânge lipsesc __jquery__în timpul rulării. Cu toate acestea, odată ce această eroare este fixat amdîncărcătorului node.jsar trebui să poată să se încarce modulele.

Publicat 08/10/2012 la 15:05
sursa de către utilizator

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