Typescript - scheiden code uitvoer

stemmen
1

Ik probeer typoscript en ik vind het zeer nuttig.

Ik heb een vrij groot project en ik was gezien het herschrijven met behulp van typoscript. Het grootste probleem hier is het volgende:

file A.ts:

class A extends B {
    // A stuff
}

file B.ts:

class B {
    // B stuff
}

Als ik compileren A.ts met deze opdracht:

tsc --out compiledA.js A.ts

Ik zal fout krijgen van de compiler omdat hij niet weet hoe te bedreiging van de B na uitstrekt.

Dus, een oplossing zou zijn, waaronder in A.ts (als eerste regel van de code):

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

opnieuw compileren van A.ts met hetzelfde commando

tsc --out compiledA.js A.ts

Zal resulteren in compiledA.js die zowel B.ts en A.ts code. (Die erg leuk zou kunnen zijn)

In mijn geval, hoef ik alleen maar naar de A.ts code te compileren in het bestand compiledA.js en ik wil niet dat de B.ts spul te zijn daar.

Inderdaad, wat ik wil is:

  • TSC --out A.js A.ts => compileren alleen de A.ts spullen
  • TSC --out B.js B.ts => compileren alleen de B.ts spullen

Ik kan dit doen door het verwijderen van de uitgaand keyword, maar doen dat ik het grootste deel van het typoscript goedheid zal verliezen.

Kan iemand telll me op als er een manier om dit te doen?

De vraag is gesteld op 03/10/2012 om 12:54
bron van user
In andere talen...                            


2 antwoorden

stemmen
2

Na wat onderzoek kwam ik erachter was het probleem geïntroduceerd door de --out argument in de compiler.

@silent__thought oplossing werkt prima als je wilt om te gaan met modules. Als je niet je nodig hebt om de eisen instructie (kijk naar de vraag) en vervolgens compileren de "main.ts" bestand withouth de --out argument

antwoordde op 03/10/2012 om 20:27
bron van user

stemmen
0

EDIT: Zoals Andrea opmerkt, als je het weglaat --outparameter krijg je het gedrag verwacht, dus geen combinatie van bronbestanden. Ik zal deze alternatieve oplossing beneden te verlaten, mocht het iemand anders kan helpen.


Ik denk dat u zal hebben om de externe module syntax (CommonJS of AMD) te gebruiken om dit te doen.

Met behulp van uw voorbeeld:

a.ts

import B = module("b")

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

b.ts

export class B {
    // B stuff
}

Compileren met tsc --out compiledA.js A.ts.

Dit resulteert in a.jshet importeren b.jsmet behulp van de CommonJS systeem. De resulterende bestanden er als volgt uit:

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;
antwoordde op 03/10/2012 om 14:59
bron van user

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