Typoskript initialisieren einer statischen variable in einer Klasse Typ
Ich habe zwei Klassen Foo
und Bar
. In der Klasse Bar
ich eine statische variable namens myFoo
und ich will, dass es automatisch initialisiert:
class Foo {
}
class Bar {
static myFoo: Foo = new Foo();
}
Allerdings bin ich mir immer diese Fehlermeldung:
Uncaught ReferenceError: Foo ist nicht definiert
Wenn ich initialisieren, dass statische Variablen in Bar
's Konstruktor, dann funktioniert es einwandfrei:
class Bar {
static myFoo: Foo;
constructor() {
Bar.myFoo = new Foo();
}
}
Warum ist das so? Was habe ich falsch gemacht, wenn ich versuchte, initialisiert die statischen Variablen myFoo
direkt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie definitiv nicht wollen, zu tun, die zweite Sache, die da läuft, zu überschreiben
myFoo
jedes mal, wenn Sie bauen eine neue Bar, und Sie sicherlich nicht wollen, dass.Was Sie hier haben, ist ein Laufzeit-problem, nicht eine compile-Zeit-problem. Die
Foo
Klasse geladen werden vor derBar
Klasse geladen wird, andernfalls der statische Initialisierer wird scheitern. Wenn beide Klassen werden in einer einzigen Datei in der genannten Reihenfolge funktioniert es. Wenn die Klassen in separate Dateien, und Sie sagen Typoskript zu kompilieren, um eine einzelne Datei sollte herausfinden der richtigen Reihenfolge für Sie (obwohl es auch bugs in diesem Bereich). Wenn Sie kompilieren, um separate Dateien, die Sie müssen die Skripts auf der Seite in der richtigen Reihenfolge zu dienen.Können Sie nur den Anruf zu initialisieren sofort folgt die Deklaration der Klasse:
Dies erfordert JQuery, sondern ist das, was ich tun, um das äquivalent einer 'statischen Konstruktor'.
Dies ist auch nützlich, wie die "entry point" Ihrer Anwendung, zum Beispiel.