ts 装饰器问题

creator ts项目都会大范围使用 ccclass 装饰器。
我自己手动创建一个类装饰器,目的是获取类名然后注册。

let ClsPool:any = {};
// ts文档规定类装饰器无法传参数
export function regisThemeCls(constructor: Function) { 
    console.log("regisThemeCls",constructor,constructor.prototype,constructor.__proto__)
    if (!constructor.__proto__ || !constructor.__proto__.name){
        cc.log("ThemeFactory 无法注册",constructor);
        return;
    }
    let baseClsName:string = constructor.__proto__.name;
    let clasName:string = constructor.name;
    if ( ClsPool[baseClsName] || ClsPool[clasName] ){
        cc.warn(`存在类注册冲突, baseClsName = ${baseClsName}  clasName = ${clasName}`);
        console.log(constructor);
    }
    ClsPool[baseClsName] = constructor;
    // cc.log("baseClsName "+baseClsName +"  clasName "+clasName)
}

然后定义TS类时,在类声明前加上 @ regisThemeCls

这种写法在调试模式(包括构建情况的调试)都没有问题,但是去掉调试模式就完全错了,所有的类都被creator编译器改造,只能读取到t和e变量。

creator 自带的ccclass是用js写的不太懂 ,特别是 checkCtorArgument方法找不到出处。

v1.8.1版本

不太理解为什么会变成这样,官方麻烦帮忙解释一下可以吗。

同问,请问解决了吗?