基本上我正在尝试创建一个动态定义类的函数,该类从传递的对象扩展另一个类。像这样的东西:
const ObjectMixin = function<T>(obj: T): new () => T {
return class extends BaseClass {
...obj // pseudo code to convey the idea
}
}
这样做的目标是能够编写混入映射状态的 Vue 类组件。像这样:
class MyComponent extends ObjectMixin(smartModule.mapState(['someState'])) {
created() {
this.someState // should not give any errors
}
}
我几乎让它与黑客一起工作
interface ObjMixinI {
<T>(obj: T): new () => T
}
const ObjectMixin: ObjMixinI = obj =>
//@ts-ignore
function() {
//@ts-ignore
Object.assign(this, obj)
}
但我不能让它扩展 Vue 加上它显然是一个可怕的解决方案。