Ich arbeite an einem ionischen 2-Projekt mit Typescript 2.0.6.Typescript statische Methoden Vererbung
Ich habe eine Basisklasse, die einige Verhaltensweisen verwalten, und ich erben mehrere Klassen aus dieser Basisklasse. Und ich möchte in der Lage sein, den Namen der tatsächlichen Klasse (nicht die Basisklasse) zu bekommen.
Hier ist mein Code:
export class AbstractModel {
oneInstanceMethod() {
this.getClassName();
}
static oneStaticMethod() {
this.getClassName();
}
getClassName() {
return (<any>this).constructor.name;
}
static getClassName() {
return (<any>this).name;
}
}
export class MyClass1 extends AbstractModel {
}
export class MyClass2 extends AbstractModel {
}
Und ich habe zwei Arten von Anrufen: Entweder MyClass1.oneStaticMethod()
oder (new MyClass2).oneInstanceMethod()
.
Mein Problem ist, dass dieser Code vorher funktioniert hat (jetzt bekomme ich 'e', weil es die Funktion e() zurückgibt) Ich habe ein Upgrade in meinem ionischen Projekt gemacht. Ich denke, meine Typoskript-Version wurde aktualisiert (ich bin mir nicht sicher, aber ich denke, es war der 1.8 zuvor).
Wie kann ich das lösen? Ich habe viele Dinge ausprobiert (wie das Erstellen von Variablen, um die Werte zu speichern, aber beide funktionieren nicht im statischen Modus und im Instanzmodus).
Danke!
Klingt, dass Ihr Code minimiert wird. Der Code, den Sie gepostet haben, scheint zu funktionieren (https://jsfiddle.net/7bp44voz/)? – Jeroen
Sie können die Minifikationsklasse normalerweise so anpassen, dass Klassen- und Funktionsnamen beibehalten werden, obwohl Sie möglicherweise Ihr Design überdenken müssen (d. H. * Warum * benötigen Sie einen Klassennamen?) Oder ist es zum Debuggen?) – Jeroen
nein, ich schreibe ein ORM und ich möchte viele Dinge in der Basisklasse abstrahieren. Und ich möchte den Klassennamen als meinen SQL-Tabellennamen verwenden. –