[LayaAir 2.0]升级到2.0后.原本用字符串索引module内的函数,发现不行了, 求指教

1.x版本把每个ts编译成为一个js。并且namespace和module暴露在全局空间里,不用import就可以namespace.XXX和module.xxx引用。

我还发现2.x版本已经不同了.只编译import的, 原来的代码编译不过了, 研究了好久也没研究出方法.  请大大帮忙答疑一下.
 
例如: a.ts
module proto{
   export function msg1(){
       console.log("msg1");
   }
}
 
b.ts
module proto{
   export function msg2(){
       console.log("msg2");
   }
}
 
然后再main.ts里面.
function dispatchMsg(name: string){
  let fun = proto[name];
  fun();
}
 
 
dispatchMsg("msg1");
这样就能反射到对应的函数并且调用了, 
到了2.x就不行了, 希望能帮忙解答一下.怎么把上面的代码转到2.x下使用? 
 
我的问题应该能用2.x的官方例子提供的如下代码能解决, 
if (window["Laya3D"]) Laya3D.init(GameConfig.width, GameConfig.height);
        else Laya.init(GameConfig.width, GameConfig.height, Laya["WebGL"]);
        Laya["Physics"] && Laya["Physics"].enable();
        Laya["DebugPanel"] && Laya["DebugPanel"].enable();
 
我看了下. Laya也是module, 但我自己写成module,  ide就会提示 不能将命名空间"proto"用作值.
Laya是用什么技术来实现这个的,  求指教
 
这个提问有点类似, 但想解决的问题不相同. https://ask.layabox.com/question/39307
看了也依然解决不了我的疑问
已邀请:

AzureSky

赞同来自:

有同学知道怎么处理么?  如果没得话.我只能把所有proto放一个文件里面import了. 虽然可以用.但会很臃肿呢.

要回复问题请先

商务合作
商务合作