Es scheint, dass die Klassen im Flow immer auf Instanzen dieser Klasse verweisen und man verwendet typeof
, um auf die eigentliche Klasse selbst zu verweisen. Also, wenn ich eine Variable soll eine Unterklasse verweisen (keine Instanz) einer Basisklasse, kann ich:
class MyBaseClass {}
class MySubClass extends MyBaseClass {}
let a: $Subtype<MyBaseClass> = MySubClass; // fails
let b: $Subtype<MyBaseClass> = new MySubClass(); // works, but I don't want this.
let c: $Subtype<typeof MyBaseClass> = MySubClass; // works! Ok, we're good
Allerdings kann ich nicht diese scheinen Parameter mit Typ zu tun! Zum Beispiel ist die folgende:
type GenericSubclass<T> = $Subtype<typeof T>;
// fails with `^ identifier `T`. Could not resolve name`
Wenn ich die folgende Typoskript Trick versuchen (siehe Generic and typeof T in the parameters), es scheitert auch:
type ValidSubclass<T> = { new(): T };
const c: ValidSubclass<BaseClass> = MySubClass;
// fails with: property `new`. Property not found in statics of MySubClass
Bitte beachte, dass ich new
versucht, __proto__
und constructor
.
Was gibt? Gibt es eine Problemumgehung?