Ich kompiliere mein TypeScript-Projekt in eine einzige JS-Datei, indem ich im Moment eine outFile in den Compileroptionen festlege. In meinem Projekt ist jede Klasse in einer anderen Datei definiert.TypeScript Kompilierreihenfolge in einzelne Datei
Das Problem ist, dass Klassen, die voneinander abhängen, in der Ausgabe JS in der richtigen Reihenfolge nicht verkettet sind.
Zum Beispiel, wenn ich die Klasse A, die Klasse B erstreckt, würde es Klasse B bedeuten würde, hat vor der Klasse A. kompiliert werden
(1)
class A extends B { } //error - can't find B
class B { }
(2)
Das Problem ist die Dateireihenfolge in TypeScript Compile ist nicht nach Klassenabhängigkeiten definiert, was zu vielen Instanzen von (1).
Es kann durch die manuelle Definition der Kompilierung, um mit vielen Zeilen gelöst werden:
/// <reference path="myFile.ts"/>
jedoch ist es nicht ideal und Kopfschmerzen in großen Projekten schnell werden kann.
Die andere Option von dem, was ich lese, ist die Verwendung von externen Modulen und in der Lage, relevante Klassen/Dateien zu verlangen/zu importieren.
Es klingt gut, aber es scheint nur ASYNC Laden während Laufzeit der erforderlichen Dateien zu kümmern, nachdem jede ts-Datei in eine eigene js-Datei kompiliert wurde.
Was ich brauche, ist die richtige Kompilierreihenfolge nach Klassenabhängigkeiten während kompilieren Zeit von TS zu js.
Ich googeln „Typoskript kompilieren Ordnung“ und gründlich die ersten 10 Ergebnisse lesen - Bedeutung folgende Hinweise auf turoials, Dokumentationen, Videos, etc ...
Es scheint, die Menschen das gleiche Problem, aber ihre Fragen erlebt haben haben wurde nie zur Zufriedenheit beantwortet.
Von dem, was ich verstehe, sollte es möglich sein, mit dem externen CommonJS-Modul zu tun, aber alles, was ich aus den Antworten verstehen kann, ist ein allgemeiner Sinn dessen, was passieren sollte, anstatt eine einfache und direkte Antwort, wie man es tatsächlich macht .
Wenn Sie die Antwort wissen, lassen Sie uns dieses Problem zu lösen, ein für alle Mal :)
Wenn Sie das alles in einer einzigen js Datei kompilieren wollen, dann würde ich nicht Module verwenden, aber in diesem Fall sollten Sie mit Referenzen sein, und ich denke auch, dass die Referenzen in großen Projekten helfen, wie sie die Beziehungen darstellt zwischen den verschiedenen Dateien (wenn es viele Dateien gibt, kann es sonst nicht unordentlich werden). Es ist nicht anders als in anderen Sprachen. Haben Sie versucht, die zu kompilierenden Dateien mit der 'files' -Eigenschaft in [tsconfig.json] (https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) zu spezifizieren? –
Die Angabe der Dateien würde nur bedeuten, die Kompilierreihenfolge manuell anders einzustellen, korrigiere mich, wenn ich falsch liege. Nach einem zweiten Blick auf die Verwendung von Referenzen, ist es in der Tat ähnlich wie es in anderen Sprachen gemacht wird. Gibt es vielleicht einen subtileren Ausdruck als pfadbasierte Referenzen mit einem umständlichen Tag? Ähnliches gilt für den Import mit paketbasierten Pfaden? d. H. Etwas wie "importieren Utils.Mathutils;" anstelle von "/// " –
Sie können importieren (was ähnlich ist, was Sie fragen), aber das ist mit Modulen und es macht weniger Sinn in dein Fall. Ich stimme zu, dass die Referenzen nicht sehr komfortabel sind, aber das ist wahrscheinlich alles, was Sie haben. –