Ich möchte ein Typoskript Mixin eine abstrakte Methode haben, die von der Mixed-in-Klasse implementiert wird. Etwas wie das.Abstrakte Methoden in Typoskripts Mixins
class MyBase {
}
type Constructor<T = {}> = new (...args: any[]) => T;
function Mixin<TBase extends Constructor<MyBase>>(Base: TBase) {
return class extends Base {
baseFunc(s: string) {};
doA()
{
this.baseFunc("A");
}
}
};
class Foo extends Mixin(MyBase) {
constructor()
{
super();
}
baseFunc(s: string)
{
document.write("Foo "+ s +"... ")
}
};
Nun, dies funktioniert, aber ich würde wirklich baseFunc im mixin mag abstrakt machen, um sicherzustellen, dass es in Foo umgesetzt wird. Gibt es eine Möglichkeit, dies zu tun, wie abstract baseFunc(s:string);
sagt ich muss eine abstrakte Klasse, die nicht für Mixins erlaubt ist ...
Ich dachte, ich hätte das probiert! Warum funktioniert abstrakte Klasse nicht? (bearbeiten - ah! weil es anonym ist!) – Roddy
Dieses Beispiel verliert die Methoden und Eigenschaften von MyBase. Sie können mit 'function Mixin > (Basis: B)' beheben. –