Géppel - elválasztó kód kimenet

szavazat
1

próbálok géppel és azt tapasztalom, hogy nagyon hasznos.

Van egy elég nagy projekt, és én arra tekintve újraírás használatával géppel. A fő probléma itt a következő:

fájl A.ts:

class A extends B {
    // A stuff
}

fájl B.ts:

class B {
    // B stuff
}

Ha fordítsam A.ts ezzel a paranccsal:

tsc --out compiledA.js A.ts

Hozok hibát a fordító, mert ő nem tudja, hogyan kell fenyegetés a „B” után húzódik.

Tehát a „megoldás” lenne köztük A.ts (elsővonalbeli kódot):

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

Összeállítása ismét A.ts ezt a parancsot

tsc --out compiledA.js A.ts

Eredményez compiledA.js egyaránt tartalmazó B.ts és A.ts kódot. (Ami nagyon szép)

Az én esetemben, csak le kell fordítanunk a A.ts kódot a compiledA.js fájlt, és nem akarom a dolgokat B.ts lennie.

Valóban, amit én szeretnék:

  • TSC --out A.js A.ts => csak azokat az A.ts cucc
  • TSC --out B.js B.ts => csak azokat az B.ts cucc

Meg tudom csinálni, hogy eltávolítjuk a „terjed” kulcsszó, de ezzel, hogy én laza legtöbb géppel jóság.

Tud valaki telll meg, ha van egy módja annak, hogy ezt?

A kérdést 03/10/2012 12:54
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
2

Némi kutatás után kiderült, hogy a probléma által bevezetett --out érv a fordító.

@silent__thought megoldás működik, csak finom, ha szeretné kezelni modulokat. Ha nem akkor kell használni a szükség nyilatkozat (nézd meg a kérdést), majd összeállítja a „main.ts” fájl withouth a --out érv

Válaszolt 03/10/2012 20:27
a forrás felhasználó

szavazat
0

EDIT: Mivel Andrea rámutat, ha kihagyja a --outparaméter akkor kap a viselkedés várható, azaz nem kombinációja forrás fájlokat. El fogom hagyni ezt az alternatív megoldást az alábbi beládáz segíthet valaki másnak.


Azt hiszem, akkor kell használni a külső modul szintaxis (CommonJS vagy AMD) erre.

Segítségével például:

ATS

import B = module("b")

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

b.ts

export class B {
    // B stuff
}

Fordítsd le tsc --out compiledA.js A.ts.

Ez azt eredményezi, a.jsimportáló b.jsa CommonJS rendszert. A kapott fájl így néz ki:

ATS

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;
Válaszolt 03/10/2012 14:59
a forrás felhasználó

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