2017-01-27 8 views
8

クラスを最初にインポートし、その後にnewを作成せずにクラスのインスタンスを作成したいとします。ノード/ JSはインポート時に新しいインスタンスを作成します

代わりの

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

私は

var mainInstance = new require('../dist/main').Main(); 

をしたいが、構文で何かが間違っています。

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

これは可能ですか?私はTypeScriptとプレーンJSの組み合わせを使用します。

+0

あなたが得る実際の構文エラーとは何ですか? – erbridge

+0

@erbridge私の更新を参照 – DanFromGermany

+0

1つのインスタンスしか存在しないようにするには、クラスの代わりにインスタンスをエクスポートして、誤用を防ぐことができます。 – 4castle

答えて

7

あなたはそれを達成するために括弧を使用することができます。

var main = new (require('../dist/main').Main)(); 

そして、あなたのmodule.exportsが単独でクラスをエクスポートした場合は、次のようにそれを行うだろう:

var main = new (require('../dist/main'))(); 
+1

'require'呼び出しをラップすることもできます:' new(require( '../ dist/main'))。Main() '。 – erbridge

関連する問題