我有许多TS模块,它们只包含TS类。(在不同的模块中,但这并不相关)。这里重要的部分是,我的TS模块中的类从来没有直接通过名称示例化。相反,Map是由返回类信息的应用程序的其他部分访问的,并且该类信息用于示例化对象。
我的问题是,因为我从来没有直接从TS模块的类中通过名称访问任何东西,模块在运行时没有得到求值,因此类装饰器没有得到处理,所以没有任何东西被添加到我的Map中。
我用两种方法解决了这个问题。
1.在其他一些模块中,我对每个模块中的一个类执行了无用的“new”(一个就足以强制对模块进行求值)。
1.我在每个TS模块中放置了一个虚拟函数,并在初始化过程中从其他模块调用它。
这些变通办法中的每一个都强制对模块进行求值,从而对装饰器进行求值。
有没有其他方法可以强制模块在运行时求值,即使在应用程序中的其他地方没有通过名称显式引用任何东西?导入本身不会强制求值。
1条答案
按热度按时间siv3szwd1#
我的解决方案是导入每个TS模块,而不指定模块中的任何特定函数或类型。这会导致模块被求值。