自定义的类装饰器的一些问题

自定义了一个类装饰器,并在函数中返回了一个新的构造器,例如

function decorate(obj: any) {
return class extends obj {
}
}

@decorate
@ccclass(‘MyComponent’)
export default class MyComponent extends Component {}

但是当我将类装饰器添加到组件上时,会出现以下几种情况

  1. 如果组件被预先添加到场景中已存在的node上时,这个组件将不会使用新的构造器实例化
  2. 如果组件定义在一个prefab上,然后在代码中实例化这个prefab,则此时组件也不会使用新的构造器实例化,并且由于prototype不同,使用node.getComponent(targetComponent)无法获得对应的组件实例,因为targetComponent的原型是装饰后的构造器的,而node里的组件的原型是原始的构造器的。

请问有什么办法可以解决这两个问题
第一个问题可以通过动态创建node来解决,但也导致了无法在场景用预先添加node,增加额外的代码
第二个问题尚且没有找到解决方案。