从打字稿的目录中实例化所有类
Posted
技术标签:
【中文标题】从打字稿的目录中实例化所有类【英文标题】:Instantiate all classes from a directory in typescript 【发布时间】:2021-12-04 07:55:18 【问题描述】:我在一个目录中的 typescript 文件中有一系列类,我想将它们全部放入一个列表中。这是我到目前为止所做的:
我喜欢实例化的类示例:
export class MyClass1
constructor() this.test = "a test"
...
下面是应该加载它们的函数:
public getMyClasses()
let MyClasses = [];
//this.getMyClassFiles() return all the filenames of the classes in the directory
for (const myClassFile of this.getMyClassFiles())
const myClass = require(`$this.myClassFileRequirePath/$myClassFile`);
MyClasses.push(new myClass());
return MyClasses;
现在,如果我尝试实例化我刚刚需要的类,我会收到一条错误消息,指出“MyClass 不是构造函数”。我该如何解决?
【问题讨论】:
这是 NodeJs 应用还是 webapp? NodeJS 应用程序。准确地说,它是一个使用 Discord.JS 的 Discord 机器人。 不。这就是 this.getMyClassFiles() 所做的。我需要每个文件,但我需要先实例化该类,然后再将其添加到数组 MyClasses 中。 【参考方案1】:找到了解决办法。我需要将类导出到一个对象中。
class MyClass1
constructor() this.test = "a test"
...
module.exports = outClass: MyClass1
然后从对象中获取。
public getMyClasses()
let MyClasses = [];
//this.getMyClassFiles() return all the filenames of the classes in the directory
for (const myClassFile of this.getMyClassFiles())
const myClass = require(`$this.myClassFileRequirePath/$myClassFile`);
MyClasses.push(new myClass.outClass());
return MyClasses;
【讨论】:
以上是关于从打字稿的目录中实例化所有类的主要内容,如果未能解决你的问题,请参考以下文章