Wie kann ich eine Klasse aus einem Typoskript Funktion?
Ich bin mit Typoskript mit dependency injection library und die funktioniert sehr ähnlich Eckig 1 - grundsätzlich: registrieren eine Fabrik mit Ihren Abhängigkeiten als Argumente.
Dies ist, wie ich würde die Registrierung einer Klasse in ES6
export let factory = () => {
return class Foo {}
};
Wenn ich das gleiche schreiben in Maschinenschrift:
export let factory = () => {
return class Foo {}
};
Es nicht kompiliert werden kann mit dem Fehler
Fehler TS4025: Exportierte variable 'Fabrik' hat oder mit eigenem Namen 'Foo'.
Gibt es eine Möglichkeit, Typoskript, um wieder eine Klasse aus einer factory-Funktion?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schnelle Antwort
ändern:
zu diesem:
Mehr beantworten
Dieser Fehler ausgelöst werden könnte, - /forced-by - tsconfig.json Einstellung:
Aber das ist nicht der Grund, es ist nur ein trigger. Der wahre Grund (wie hier beschrieben Fehler beim exportieren-Funktion, die zurückgibt, Klasse: Exportierte variable oder mit eigenem Namen) kommt aus dem Typescript-compiler
wenn TS compiler gründet Aussage wie diese
muss es beginnen, zu erraten, was ist der return-Typ, weil diese information fehlt (überprüfen Sie die
: <returnType>
Platzhalter):in unserem Fall, TS wird schnell feststellen, dass das zurückgegebene
type
ist leicht zu erraten:so, in Fall würden wir haben, die ähnliche Anweisung (dies ist nicht das gleiche, wie die ursprüngliche Aussage an alle, aber lasst uns einfach versuchen, es zu benutzen als ein Beispiel, um zu verdeutlichen, was passiert) können wir richtig erklären Rückgabetyp:
diesem Ansatz arbeiten würden, weil die
Foo
Klasse exportiert wird, d.h. sichtbar für die Außenwelt.Zurück zu unserem Fall. Wir wollen zu Rückgabetyp die nicht exportiert. Und dann MÜSSEN wir helfen TS-compiler, um zu entscheiden, was ist der return-Typ.
Könnte es werden explizit alle:
Aber noch besser wäre es, einige öffentliche Schnittstelle
Und verwenden Sie dann eine solche Schnittstelle als Rückgabetyp:
IFoo
als Schnittstelle erfordert etwas.. dieFoo
nicht implementiert... in diesem BeispielIFoo {x:boolean}
erfordert x, aber die Klasse hat es nichtclass Foo implements IFoo {}
hoffe, es hilft ein bisschenpublic x: boolean = false;
zuclass Foo
führt immer noch in die gleichen Fehler. Check dieserMüssen Sie zum exportieren der Klasse als gut, so dass die Verbraucher von der Methode kann der Zugriff auf Typ.
In der Regel eine factory Instanz zurück, anstatt eine Klasse oder ein Konstruktor.
Ich war kämpfen mit dem gleichen Fehler. Die Lösung für mich war das entfernen der
vom
tsconfig.json
oder, um es zufalse
.Ich denke, das ist eine richtige Weg, es zu tun:
Check it out auf Spielplatz
Sind Sie auf der Suche nach der Rückgabe-Typ der Klasse, aus der Funktion? Unten ist ein code-snippet, wie wir das umsetzen können-Fabrik in Maschinenschrift, ähnlich wie in anderen Sprachen.