Domanda

Sto provando dattiloscritto e lo trovo molto utile.

Ho un progetto piuttosto grande e stavo considerando di riscriverlo usando i dattiloscritti. Il problema principale qui è il seguente:

File A.TS:

class A extends B {
    // A stuff
}
.

File B.TS:

class B {
    // B stuff
}
.

Se compilo A.TS con questo comando:

tsc --out compiledA.js A.ts
.

Otterrò errori dal compilatore perché non sa come minacciare la "B" dopo la prolunga.

Allora, una "soluzione" sarebbe inclusa in A.TS (come prima linea di codice):

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

Compilazione di nuovo A.TS con lo stesso comando

tsc --out compiledA.js A.ts
.

si tradurrà in compileda.js contenente sia il codice B.TS e 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 le cose B.TS siano lì dentro.

In effetti, quello che voglio è:

    .
  • TSC --Out A.JS A.TS=> Compila solo la roba A.TS
  • TSC --OUT B.JS B.TS=> Compila solo la roba B.TS

Posso farlo rimuovendo la parola chiave "estende" ma facendo che perderò la maggior parte della bontà dattilgitrice.

Qualcuno può raccontarmi se c'è un modo per farlo?

È stato utile?

Soluzione

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

@Silent__Questa soluzione funziona bene se vuoi affrontare i moduli.Se non è necessario utilizzare la Dichiarazione Richiesta (guarda la domanda) e compilare il file "Main.ts" con l'argomentoout argomento

Altri suggerimenti

Modifica: Come Andrea sottolinea, se si omette il parametro --out riceverai il comportamento previsto, I.e. Nessuna combinazione di file sorgente.Lascerò questa soluzione alternativa sotto Incase può aiutare qualcun altro.


.

Credo che dovrai usare la sintassi del modulo esterno (Commonjs o AMD) per farlo.

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ò risulta in a.js Importing b.js utilizzando il sistema CommonJS.I file risultanti assomigliano a questo:

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;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top