Maschinenschrift - Trennen Codeausgabe

stimmen
1

Ich versuche, Typoskript und ich finde es sehr nützlich.

Ich habe ein ziemlich großes Projekt, und ich erwäge es Typoskript mit neu zu schreiben. Das Hauptproblem hier ist die folgende:

Datei A.ts:

class A extends B {
    // A stuff
}

Datei B.ts:

class B {
    // B stuff
}

Wenn ich kompilieren A.ts mit diesem Befehl:

tsc --out compiledA.js A.ts

Ich werde Fehler vom Compiler bekommen, weil er nicht weiß, wie man Bedrohung des „B“ nach erstreckt.

Also, eine „Lösung“ wäre in A.ts einschließlich (als erste Zeile Code):

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

Kompilieren A.ts wieder mit dem gleichen Befehl

tsc --out compiledA.js A.ts

Wird in compiledA.js führen sowohl B.ts und A.ts Code enthält. (Das könnte sehr schön sein)

In meinem Fall, ich brauche nur den A.ts Code in der compiledA.js Datei zu kompilieren und ich will nicht den B.ts Sachen drin sein.

Tatsächlich was ich will ist:

  • tsc --out A.js A.ts => kompilieren nur die A.ts Zeug
  • tsc --out B.js B.ts => kompilieren nur die B.ts Zeug

Ich kann es tun, indem Sie den „extends“ Schlüsselwort zu entfernen, aber tun, dass ich die meisten der Typoskript Güte verlieren werde.

Kann mir jemand telll wenn es einen Weg gibt, dies zu tun?

Veröffentlicht am 03/10/2012 um 12:54
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
2

Nach einigen Recherchen habe ich das Problem herausgefunden wurde durch das --out Argument in den Compiler eingeführt.

@silent__thought Lösung funktioniert gut, wenn Sie mit Modulen beschäftigen möchten. Wenn Sie nicht müssen Sie die benötigen Anweisung verwenden (auf die Frage suchen) und dann übersetzen Sie die „main.ts“ Datei withouth der --out Argument

Beantwortet am 03/10/2012 um 20:27
quelle vom benutzer

stimmen
0

EDIT: Wie Andrea weist darauf hin, wenn Sie das weglassen --outParameter Sie wird das erwartete Verhalten bekommen, dh keine Kombination von Quelldateien. Ich werde diese alternative Lösung unten verlassen einhüllen es jemand anderes helfen kann.


Ich glaube, Sie müssen die externe Modul Syntax (Commonjs oder AMD) verwenden, um dies zu tun.

Mit Ihrem Beispiel:

a.ts

import B = module("b")

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

b.ts

export class B {
    // B stuff
}

Kompilieren mit tsc --out compiledA.js A.ts.

Dies führt zu a.jsimportieren b.jsdas Commonjs System. Die resultierenden Dateien wie folgt aussehen:

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;
Beantwortet am 03/10/2012 um 14:59
quelle vom benutzer

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