夫婦の問題がここにあります:
- あなたは何をインスタンス化していない、とあなたが
import * as util
を行うとdoSomething
がインスタンスメソッド
- で、
util
はモジュールではなく、その中のオブジェクトを表します。あなたがUtil
をしたい場合
、あなたはちょうどそれをインポートする必要があります:あなたのコードは、パッチを適用しています。ここ
var u = new Util();
u.doSomething("test");
:
は
import { Util } from './util'
次に、あなたは最終的にそれにメソッドを呼び出す前に、Util
をインスタンス化しますup:
import { Util } from './util'
export class MyClass{
constructor()
{
var u = new Util();
u.doSomething("test");
}
}
言ったことすべては、あなたがあなたのutilsのを使用している方法について奇妙な何かがあるように思われます。これは完全に個人的な意見ですが、コンストラクタで「何かをする」、つまり副作用を引き起こすメソッドを呼び出すことはありません。クラスは、それが依存という状態を保持していないので、彼らは、そのクラスにする必要がありますように
また、Util
のメソッドは本当に見ていません。モジュールから通常の関数をいつでもエクスポートすることができます。あなたが直接あなたの関数をエクスポートすることだろうとインスタンス化の面倒を回避だろう、とあるとして、実際にあなたの元のコードが正常に動作します
export function doSomething(val: string) { return val; }
export function doSomethingElse(val: string) { return val; }
:あなたは、このようなあなたのutilsのモジュールを書いた場合。
これは今私がそれをやることを好む方法です。 –
メソッドは静的でなければなりませんか? Utilsクラスのインスタンスを使用することはできませんか? – user728630
@GregGumあなたのステートレスな関数をちょうどクラスのラップに入れておくのは悪い考えです。なぜなら、それは木のようなモジュール最適化テクニックを壊すからです。モジュールの最上位にできるだけ近いものをすべてエクスポートする必要があります。 –