Ich versuche ES6 Mixin in TypeScript zu verwenden. Was ich habe ist wie folgt, und es funktioniert perfekt mit BaseClass
.ES6 Mixin mit generischem Typ in TypeScript
class BaseClass {
public foo() {}
};
interface IMyMixin {
foo2();
}
let MyMixin = (superclass: typeof BaseClass) => class extends BaseClass implements IMyMixin {
public foo2() {}
}
class MyBaseClass extends MyMixin(BaseClass) {
}
Allerdings kann ich mich bewerben MyMixin
nicht auf abgeleitete Klasse von BaseClass
; In der Zwischenzeit kann ich auch keine generische Mischung machen.
Gibt es eine Möglichkeit, es für BaseClass
und DerivedClass
arbeiten zu lassen?
class DerivedClass extends BaseClass {
public bar() {}
}
class MyDerivedClass extends MyMixin(DerivedClass) {
public something() {
// Compile Error: Property 'bar' does not exist on type 'MyDerivedClass'
this.bar();
}
}
// Compile Error: 'T' only refers to a type, but is being used as a value here.
let MyMixin = <T extends BaseClass>(superclass: typeof T) => class extends T implements IMyMixin {
public foo2() {}
}
Haben Sie vor zu schreiben "Klasse erweitert Superklasse implementiert IMyMixin" anstelle von "Klasse erweitert BaseClass implementiert IMyMixin"? Andernfalls wird 'superclass' -Variable nicht in der' MyMixin'-Factory-Funktion verwendet. –
@Maximus Vielen Dank, mir war nicht klar, dass 'superclass' im Rückgabetyp verwendet werden könnte. – Haocheng