【问题标题】: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 中。

标签: typescript class require


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-14
    • 2022-08-18
    • 1970-01-01
    • 2018-07-12
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多