我有一个类,我想主要用作具有常量实例的其他类的基类,但也作为其他类的mixin类。理想情况下,我喜欢以下内容:
class Base{
someMethod(){
//do something
}
}
class ConstantClass extends Base{
const ConstantClass();
anotherMethod(){
//do something else
}
}
class MixedClass extends NonMixinClass with Base{
thirdMethod(){
//a third thing
}
}
上面有一个错误,即ConstantClass在没有调用超类常量构造函数的情况下不能有常量构造函数。但是,如果我向Base()添加任何类型的构造函数,它就不能用作mixin。
我目前的解决方法是在静态方法中复制功能,如下所示:
class Base{
const Base();
static someStaticMethod(Base base){
//do something
}
someMethod() => Base.someStaticMethod(this);
}
class ConstantClass extends Base{
const ConstantClass(): super();
anotherMethod(){
//do something else
}
}
class BaseMixin implements Base{
someMethod() => Base.someStaticMethod(this);
}
class MixedClass extends NonMixinClass with BaseMixin{
thirdMethod(){
//a third thing
}
}
当基类中只有一个函数时,这并不是太糟糕,但对于复杂的类来说,事情变得非常冗长,如果有一种解决问题的简单方法,我会喜欢保持清洁。提前谢谢。
答案 0 :(得分:0)
我虽然class ConstantClass extends Object with Base {
会这样做,但我得到的新错误是#34;不能为具有mixin"的类声明常量构造函数。所以我在这里没有看到解决方案,但没有使用const构造函数。