typescript mixin 中的抽象方法
Abstract methods in typescript mixins
我想要一个 Typescript Mixin 有一个由 mixed-into class 实现的抽象方法。像这样。
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 +"... ")
}
};
现在,这行得通了,但我真的很想使 mixin 中的 baseFunc 成为抽象的,以确保它在 Foo 中实现。有什么方法可以做到这一点,正如 abstract baseFunc(s:string);
所说,我必须有一个抽象 class,这对于混入是不允许的...
Anonymous class 不能是抽象的,但是你仍然可以像这样声明局部mixin class 是抽象的:
class MyBase {
}
type Constructor<T = {}> = new (...args: any[]) => T;
function Mixin(Base: Constructor<MyBase>) {
abstract class AbstractBase extends Base {
abstract baseFunc(s: string);
doA()
{
this.baseFunc("A");
}
}
return AbstractBase;
};
class Foo extends Mixin(MyBase) {
constructor()
{
super();
}
baseFunc(s: string)
{
document.write("Foo "+ s +"... ")
}
};
我想要一个 Typescript Mixin 有一个由 mixed-into class 实现的抽象方法。像这样。
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 +"... ")
}
};
现在,这行得通了,但我真的很想使 mixin 中的 baseFunc 成为抽象的,以确保它在 Foo 中实现。有什么方法可以做到这一点,正如 abstract baseFunc(s:string);
所说,我必须有一个抽象 class,这对于混入是不允许的...
Anonymous class 不能是抽象的,但是你仍然可以像这样声明局部mixin class 是抽象的:
class MyBase {
}
type Constructor<T = {}> = new (...args: any[]) => T;
function Mixin(Base: Constructor<MyBase>) {
abstract class AbstractBase extends Base {
abstract baseFunc(s: string);
doA()
{
this.baseFunc("A");
}
}
return AbstractBase;
};
class Foo extends Mixin(MyBase) {
constructor()
{
super();
}
baseFunc(s: string)
{
document.write("Foo "+ s +"... ")
}
};