2
TypeScriptでは、クラスを関数インスタンスのコンストラクタにすることは可能ですか?TypeScript:関数のインスタンスを作成するクラスを定義できますか?
TypeScriptでは、クラスを関数インスタンスのコンストラクタにすることは可能ですか?TypeScript:関数のインスタンスを作成するクラスを定義できますか?
これは技術的に可能です(これはいくつかのハッキングを必要としますが、ここでは書きません)が、実際にはこれをしたくありません。ここに理由があります。
new
オペレータは、その__proto__
オペランドのprototype
新しいオブジェクト(ない関数)を作成します。つまり、new
演算子によって返された呼び出し可能なものを、おそらく以外のコンストラクタから明示的に戻さない限り、呼び出すことはできません。
しかし、あなたは、コンストラクタの外に何かを返す場合、thing instanceof SomeThing
はfalse
になるだろう、とあなたはthing
からクラスのprototype
メソッドを使用できるようにするつもりはありません。その時点では、実際にはclass
のような振る舞いではなく、ちょうど工場を持っているほうがよいでしょう。関数は、何でもしてもかまいません。
@ Ryanの優れた答えに追加する:あなたがしようとしていることを達成するために「クラス」は必要ありません。別の 'function'を返す' function'を作成することができます。必要ならば、[closure](https://developer.mozilla.org/ja/docs/Web/JavaScript/Closures)(外部関数)を使用して、追加の設定を "保存"することができます。 –