Die Art Signatur für eine nicht-abstrakte Klasse (nicht abstrakte Konstruktor-Funktion) in Typoskript ist die folgende:Abstrakt Konstruktortyp in Typoskript
declare type ConstructorFunction = new (...args: any[]) => any;
Dies auch ein newable Typ genannt wird. Allerdings brauche ich eine Typ-Signatur für eine abstrakte Klasse (abstrakte Konstruktorfunktion). Ich verstehe, dass es so definiert werden kann, mit dem Typ Function
, aber das ist Weg zu breit. Gibt es keine präzisere Alternative?
Edit:
Um zu klären, was ich meine, zeigt der folgende kleine Schnipsel, den Unterschied zwischen einem abstrakten Konstruktor und einem nicht-abstrakten Konstruktor:
declare type ConstructorFunction = new (...args: any[]) => any;
abstract class Utilities {
...
}
var UtilityClass: ConstructorFunction = Utilities; // Error.
Typ ' typeof Utilities 'ist nicht dem Typ' new '(... args: any []) => any' zuweisbar.
Ein abstrakter Konstruktortyp kann einem nicht abstrakten Konstruktortyp nicht zugewiesen werden.
Können Sie das näher erläutern? Vielleicht mehr Code zur Verfügung stellen? Warum unterscheidet sich in diesem Fall zwischen abstrakten und nicht-abstrakten Klassen? Der ctor ist niemals abstrakt. –
@NitzanTomer Ich schätze Ihre Hilfe. Ich habe ein [mcve] in die Frage bearbeitet, um das Problem zu demonstrieren. Grundsätzlich muss ich eine Klasse als Argument übergeben. Der Typ 'ConstructorFunction' funktioniert für nicht abstrakte Klassen, nicht jedoch für abstrakte Klassen. –