Ich verwende Typoskript 1.6 mit der Syntax der es6-Module.
Meine Dateien sind:
test.ts:
module App {
export class SomeClass {
getName(): string {
return 'name';
}
}
}
main.ts:
import App from './test';
var a = new App.SomeClass();
Wenn ich versuche, die main.ts
Datei zu kompilieren , wird folgende Fehlermeldung angezeigt:
Fehler TS2306: Die Datei 'test.ts' ist kein Modul.
Wie kann ich das erreichen?
javascript
typescript
ecmascript-6
Bazinga
quelle
quelle
Antworten:
Erweitert - um basierend auf einigen Kommentaren weitere Details bereitzustellen
Der Fehler
Kommt von der hier beschriebenen Tatsache http://exploringjs.com/es6/ch_modules.html
Basierend auf dem oben Gesagten benötigen wir das
export
als Teil der Datei test.js. Passen wir den Inhalt folgendermaßen an:Und jetzt können wir es auf drei Arten importieren:
Und wir können importierte Sachen wie diese konsumieren:
und rufen Sie die Methode auf, um sie in Aktion zu sehen:
Der ursprüngliche Teil versucht, die Komplexität bei der Verwendung des Namespace zu verringern
Originalteil:
Ich würde wirklich dringend empfehlen, diese Fragen und Antworten zu überprüfen:
Wie verwende ich Namespaces mit externen TypeScript-Modulen?
Lassen Sie mich den ersten Satz zitieren:
In diesem Fall brauchen wir einfach nicht
module
drinnentest.ts
. Dies könnte der Inhalt davon angepasst werdentest.ts
:Lesen Sie hier mehr
Export =
wir können es später so konsumieren:
Lesen Sie hier mehr:
Optionales Laden von Modulen und andere erweiterte Ladeszenarien
quelle
Die obigen Antworten sind richtig. Aber nur für den Fall ... Ich habe den gleichen Fehler im VS-Code. Musste Datei, die Fehler auslöste, neu speichern / neu kompilieren.
quelle
Wie kann ich das erreichen?
In Ihrem Beispiel wird ein internes TypeScript <1.5- Modul deklariert , das jetzt als Namespace bezeichnet wird . Die alte
module App {}
Syntax entspricht jetztnamespace App {}
. Infolgedessen funktioniert Folgendes:Davon abgesehen ...
Vermeiden Sie den Export von Namespaces und exportieren Sie stattdessen Module (die zuvor als externe Module bezeichnet wurden ). Bei Bedarf können Sie beim Import einen Namespace mit dem folgenden Namespace-Importmuster verwenden :
quelle
Zusätzlich zu A. Tims Antwort gibt es Zeiten, in denen selbst das nicht funktioniert. Sie müssen also:
quelle
export class... {
nicht gefallen hat, was mir dieses Problem verursacht hat. Nach dem Korrigieren der Formatierung ohne Probleme kompiliert.Zusätzlich zu Tims Antwort trat dieses Problem bei mir auf, als ich eine Umgestaltung einer Datei aufteilte und sie in ihre eigenen Dateien aufteilte.
VSCode hat aus irgendeinem Grund Teile meines [Klassen-] Codes eingerückt, was dieses Problem verursacht hat. Das war anfangs schwer zu bemerken, aber nachdem ich festgestellt hatte, dass der Code eingerückt war, formatierte ich den Code und das Problem verschwand.
Beispielsweise wurde alles nach der ersten Zeile der Klassendefinition beim Einfügen automatisch eingerückt.
quelle