Tapuscrit d'initialiser une variable statique de type classe
J'ai deux classes Foo
et Bar
. Dans la classe Bar
j'ai une variable statique appelé myFoo
et je veux qu'il soit automatiquement initialisé:
class Foo {
}
class Bar {
static myFoo: Foo = new Foo();
}
Cependant, j'obtiens cette erreur:
Uncaught ReferenceError: Foo n'est pas défini
Si j'initialise cette variable statique dans Bar
s'constructeur puis il fonctionne très bien:
class Bar {
static myFoo: Foo;
constructor() {
Bar.myFoo = new Foo();
}
}
Pourquoi est-ce? Qu'ai-je fait de mal quand j'ai essayé d'initialiser la variable statique myFoo
directement?
Vous devez vous connecter pour publier un commentaire.
Vous ne voulez certainement pas de le faire deuxième chose parce que c'est pour remplacer
myFoo
chaque fois que vous construisez un nouveau Bar, et vous ne voulez certainement pas que.Ce que vous avez ici est un problème de temps, pas un moment de la compilation problème. Le
Foo
classe doit être chargé avant laBar
classe est chargée autrement l'initialiseur statique échouera. Si les deux classes sont dans un seul fichier dans l'ordre ci-dessus, il fonctionne. Si les classes sont dans des fichiers séparés et vous dire Tapuscrit de les compiler en un seul fichier il doit trouver le bon ordre pour vous (même si il y a des bugs dans cette zone). Si vous êtes à la compilation pour séparer les fichiers, vous aurez besoin d'inclure des scripts sur la page dans le bon ordre afin de satisfaire la dépendance.Vous pouvez juste avoir à l'appel d'initialiser suivre immédiatement la déclaration de la classe:
Cela nécessite JQuery, mais est ce que je fais pour avoir l'équivalent d'un "constructeur statique'.
C'est aussi utile que le "point d'entrée" de votre application, par exemple.