Node/JS在导入时立即创建新实例

Dan*_* W. 9 javascript node.js typescript

我想创建一个类的实例,而不先导入类,new然后再创建它.

代替

var mainClass = require('../dist/main'); // has "class Main { ... }"
var mainInstance = new mainClass();
Run Code Online (Sandbox Code Playgroud)

我想要

var mainInstance = new require('../dist/main').Main();
Run Code Online (Sandbox Code Playgroud)

但是语法错误.

var main = new require('../dist/main').Main();
                                       ^
TypeError: Class constructor Main cannot be invoked without 'new'
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?我使用TypeScript和普通JS的组合.

zur*_*fyx 8

您可以使用括号来实现:

var main = new (require('../dist/main').Main)();
Run Code Online (Sandbox Code Playgroud)

如果您module.exports只是出口课程,您可以像下面这样做:

var main = new (require('../dist/main'))();
Run Code Online (Sandbox Code Playgroud)