Tipografico - separare uscita codice

voti
1

Sto cercando dattiloscritto e lo trovo molto utile.

Ho abbastanza un grande progetto e mi stava prendendo in considerazione la riscrittura utilizzando dattiloscritto. Il problema principale è la seguente:

depositare A.ts:

class A extends B {
    // A stuff
}

depositare B.ts:

class B {
    // B stuff
}

Se compilo A.ts con questo comando:

tsc --out compiledA.js A.ts

Prendo di errore del compilatore causa non sa come minaccia la B, dopo si estende.

Quindi, una soluzione sarebbe anche in A.ts (come prima riga di codice):

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

Compilazione nuovamente A.ts con lo stesso comando

tsc --out compiledA.js A.ts

Si tradurrà in compiledA.js contenenti sia B.ts e il codice A.ts. (Che potrebbe essere molto bello)

Nel mio caso, ho solo bisogno di compilare il codice A.ts nel file compiledA.js e non voglio che i B.ts roba per essere lì.

In effetti, quello che voglio è:

  • TSC --out A.js A.ts => compilare solo la roba A.ts
  • TSC --out B.js B.ts => compilare solo la roba B.ts

Posso farlo rimuovendo il estende parola chiave, ma facendo che io perdo la maggior parte della bontà dattiloscritto.

Qualcuno mi può telll se c'è un modo per fare questo?

È pubblicato 03/10/2012 alle 12:54
fonte dall'utente
In altre lingue...                            


2 risposte

voti
2

Dopo alcune ricerche ho scoperto che il problema è stato introdotto dal l'argomento --out nel compilatore.

soluzione @silent__thought funziona bene se si vuole lavorare con i moduli. Se non sei sarà necessario utilizzare l'istruzione require (guardare la questione) e quindi compilare il file "main.ts" tecnico senza l'argomento --out

Risposto il 03/10/2012 a 20:27
fonte dall'utente

voti
0

EDIT: Come Andrea fa notare, se si omette il --outparametro si ottiene il comportamento previsto, vale a dire nessuna combinazione di file di origine. Lascio questa soluzione alternativa in caso di sotto può aiutare qualcun altro.


Credo che si dovrà utilizzare la sintassi modulo esterno (CommonJS o AMD) per fare questo.

Usando il tuo esempio:

a.ts

import B = module("b")

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

b.ts

export class B {
    // B stuff
}

Compilare con tsc --out compiledA.js A.ts.

Ciò si traduce in a.jsimportazione b.jsutilizzando il sistema CommonJS. I file risultanti simile a questa:

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;
Risposto il 03/10/2012 a 14:59
fonte dall'utente

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