Typescript - separarea de ieșire cod

voturi
1

Am încercat dactilografiat și mi se pare foarte util.

Am un proiect destul de mare și am fost în considerare rescrierea-l folosind dactilografiate. Problema principala aici este urmatoarea:

fișier A.ts:

class A extends B {
    // A stuff
}

fișier B.ts:

class B {
    // B stuff
}

Dacă am compila A.ts cu această comandă:

tsc --out compiledA.js A.ts

Aduc eroare de compilator pentru că el nu știe cum să amenințe „B“ după extinde.

Deci, o „soluție“ ar fi inclusiv în A.ts (ca primă linie de cod):

/// <reference path=./B.ts />

Compilarea din nou A.ts cu aceeași comandă

tsc --out compiledA.js A.ts

Va avea ca rezultat compiledA.js care conțin atât B.ts și codul A.ts. (Care ar putea fi foarte frumos)

În cazul meu, am nevoie doar de a compila codul A.ts în fișierul compiledA.js și eu nu doresc B.ts lucruri să fie acolo.

Într-adevăr, ceea ce vreau este:

  • TSC --out A.js A.ts => compila numai lucrurile pe care A.ts
  • TSC --out B.js B.ts => compila numai lucrurile pe care B.ts

Pot face acest lucru prin eliminarea „extinde“ Cuvânt cheie, dar face că voi pierde cea mai mare parte bunătatea dactilografiate.

Poate cineva să-mi telll dacă există o modalitate de a face acest lucru?

Întrebat 03/10/2012 la 12:54
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
2

După unele cercetări am aflat problema a fost introdusă de argumentul --out în compilator.

Soluție @silent__thought funcționează bine, dacă doriți să se ocupe cu module. Dacă nu sunteți va trebui să utilizați declarația necesită (uita-te la întrebare) și apoi compila „main.ts“ fișierul withouth argumentul --out

Publicat 03/10/2012 la 20:27
sursa de către utilizator

voturi
0

EDIT: După cum arată Andrea, dacă omiteți --outparametrul va obține comportamentul de așteptat, adică nici o combinație de fișiere sursă. Voi lăsa această soluție alternativă sub incase poate ajuta pe altcineva.


Cred că va trebui să utilizați sintaxa modul extern (CommonJS sau AMD), pentru a face acest lucru.

Folosind exemplul tau:

a.ts

import B = module("b")

class A extends B.B {
    // A stuff
}

b.ts

export class B {
    // B stuff
}

Compile cu tsc --out compiledA.js A.ts.

Acest lucru are ca rezultat a.jsimportul b.jsfolosind sistemul CommonJS. Fișierele rezultate arata astfel:

a.ts

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
}
var B = require("./b")
var A = (function (_super) {
    __extends(A, _super);
    function A() {
        _super.apply(this, arguments);

    }
    return A;
})(B.B);

b.ts

var B = (function () {
    function B() { }
    return B;
})();
exports.B = B;
Publicat 03/10/2012 la 14:59
sursa de către utilizator

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