Ich habe etwas JavaScript-Code, der eine Klasse basierend auf einer Datenstruktur generiert, wobei die Namen und Signaturen ihrer Methoden vom Inhalt dieser Datenstruktur abhängen. Ist es möglich, diese Beziehung in TypeScript darzustellen? Ist es nicht möglich, zumindest anzugeben, dass die Ausgabeklasse über eine bestimmte Menge möglicher Methodensignaturen verfügt, die eine bestimmte (aber zur Kompilierungszeit unbekannte) Menge von Methoden enthält?Ist es möglich, eine Klasse darzustellen, deren Prototyp zur Laufzeit in TypeScript definiert ist?
In meinem speziellen Fall ist die Eingangsdaten könnten wie folgt aussehen:
{
'methodName1': {
'flag1': true,
'flag2': false
},
'methodName2': {
'flag1': false,
'flag2': false
}
}
und die resultierende Klasse mit Methoden haben methodName1
und methodName2
, mit der Signatur jeder Methode eines von 4 vordefinierten Methodensignaturen, bezogen auf die Werte der Flags.
Da Typoskript wirklich nur während der Kompilierung Zeit existiert, macht es Sinn, dass es Ihnen nicht helfen kann Informationen während der Laufzeit eingeben. Wenn die Datenstruktur natürlich konstant ist, können Sie möglicherweise einen Typ basierend darauf erstellen. Wenn es nur zur Laufzeit verfügbar ist, bin ich mir nicht sicher, ob Sie Ihre dynamischen Objekte einfach als Schlüssel-Wert-Paare eingeben können. Haben Sie ein Beispiel für den Code, den Sie schreiben werden? – y2bd
Die Verwendung einer abstrakten Schnittstelle anstelle einer bestimmten Klasse funktioniert möglicherweise besser für Sie – Bergi
Möchten Sie diese Klassen zur Laufzeit oder zur Kompilierungszeit generieren? Bitte klären Sie. Typ Sicherheit wird zur Kompilierzeit überprüft. Die Laufzeit kommt nach der Kompilierungszeit. Daher können Sie zur Laufzeit bei compiletime keine Schnittstelle definieren. Bedenken Sie, dass dies ein [X/Y-Problem] ist (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem): vielleicht erfordert Ihr Problem keine typesafety/compiletime-Prüfungen (denken Sie Sie müssen Klassen generieren, während sie eigentlich nicht notwendig sind. –