Typescript: So importieren Sie Klassen ("Uncaught ReferenceError")

8

Ich bin neu bei Typescript. Ich mag die Idee, dass der Compiler die Fehler am häufigsten aufzeigt, weil er den Code wirklich bekommt. Jetzt habe ich ein Test-Projekt gemacht, keine Compiler-Fehler, sondern eine Ausnahme zur Laufzeit:

Uncaught ReferenceError: Boot ist nicht definiert (anonyme Funktion) @ Main.ts: 7

Offensichtlich funktionieren die Importe nicht. Aber warum? Ich habe versucht mit Amd und Commonjs und habe den gleichen Fehler.

Hier der Code:

index.html

%Vor%

Main.ts

%Vor%

Fahrzeug.ts

%Vor%

Car.ts

%Vor%

Boat.ts

%Vor%

Ich verwende Webstorm, der Compiler gibt keine Fehler aus und die Dateien * .js und * .map.js werden erstellt. Im Browser gibt es keine Ausgabe. Nur die Konsole druckt "Uncaught ReferenceError: Boot ist nicht definiert (anonyme Funktion) @ Main.ts: 7"

Warum diese Ausnahme? Wie importiere ich die Klassen korrekt?

    
Moritz Göckel 01.07.2015, 12:01
quelle

2 Antworten

6

Ich vermute, dass Ihr Projekt so eingestellt ist, dass jede .ts-Datei in eine separate .js-Datei kompiliert wird. Wenn dies der Fall ist, wird nur Main.js geladen, aber boat.js, car.js, etc haben keine, was zu einem Fehler führt.

Wenn Sie Ihr Projekt ändern, um die Ausgabe in eine einzelne Datei zu kompilieren, verwendet der TypeScript-Compiler die & lt; Referenz & gt; Tags, um die anderen .ts-Dateien abzurufen und eine einzelne .js-Datei zu erstellen, auf die Sie mit einem Tag verweisen können.

Wenn Sie Visual Studio verwenden, gibt es unter TypScript Build Ihrer Projekteinstellungen die Option 'JavaScript-Ausgabe in Datei kombinieren' Wenn Sie den Befehlszeilencompiler verwenden, kann das --out-Flag verwendet werden, um eine einzelne Datei zu erzeugen - Siehe Ссылка für weitere Informationen.

    
MrKWatkins 01.07.2015, 13:49
quelle
1

Ich hatte ein ähnliches Problem, und dies lag daran, dass die HTML-Datei nicht alle Javascript-Dateien importiert hat. Um Ihre Situation zu lösen, fügen Sie Vehicle.js, Car.js und Boat.js zu Ihrer index.html-Datei hinzu.

    
Gavinvin 19.02.2017 20:52
quelle