在运行时实例化一个知道文件路径的类

时间:2019-12-26 15:29:50

标签: node.js typescript

我如何实例化一个类(例如,使用一个已知的空构造函数),

api/EmptyClass1.ts,我有:

export default class EmptyClass1 {

}

api/EmptyClass2.ts,我有:

export default class EmptyClass2 {

}

我想要这个功能:

function(filepath:string):any{
  return Object.fromFile(filepath); //this line is mock code
}

如果参数EmptyClass1分别为EmptyClass2filepath:string,则返回"api/EmptyClass1.ts""api/EmptyClass2.ts"的新实例。

定义类的文件在编写函数时可能未知,其中可能包含任意数量的文件。因此,对每个类都使用import语句,然后使用switch或if-then语句是不可接受的解决方案。

定义类的.ts文件被转码为javascript,并作为.js文件驻留在应用程序.build文件夹中。

我在node.js(最新版本)上使用打字稿。

1 个答案:

答案 0 :(得分:1)

改为使用require,您的问题将得到解决。如果该文件可能不存在,则如果要回退而不使用try/catch,则可以使用optional-require

    function fromFile(filepath:string):any{
      // return Object.fromFile(filepath); //this line is mock code
      return require(filepath);
    }

或者直接调用require而不是将其包装在另一个函数中。

还要检查: nodejs require inside TypeScript file