2013-04-25 10 views
33

私はこれをやろうとしていますが、期待したように機能しません。TypeScriptの静的メソッドにアクセスする方法

(私はAMDのオプションを使用しています)

//logger.ts 
export class Logger { 

    static log(message: string) { 
     //do stuff 
    } 
} 

//main.ts 
import logger = module('services/logger'); 
logger.log("test"); //The property 'log' does not exist on value of type '"logger"' 
logger.Logger.log(); //works 

は、あなたが(logger.logどのように行うのですか)?

+0

、私が働いて同様のコードを持っている(おそらくTSのバージョンがそれを解決) –

答えて

94

あなたはあなたが欲しいの使用を持っていることを可能にする、直接クラスをインポートすることができます。

// usage 
import { Logger } from 'path/logger.ts' 
Logger.Log(); 

そして定義は同じです。正常に動作する必要があります

// path/logger.ts 
export class Logger { 

    static Log() { 
     ... 
    } 
} 
+1

これは受け入れられた答えでなければなりません:) –

13

この回答は投稿時に正確でした。現在は推奨されていません。より良い現在のソリューションについては、下記のDimitrisの回答を参照してください。

クラスを使用することはできません。あなたはいつも{module}.{class}.{function}

をコールする必要があるとしているしかし、あなたは完全にクラスをドロップすると、ちょうど{module}.{function}を呼び出すことができます。

// services/logger.ts 
export function log(message:string){ 
// do stuff 
} 

//main.ts 
import logger = module('services/logger'); 
logger.log("test"); // Should work 
+0

内部モジュールは、型システムに貢献する方法への変更は、ここでは関係ありません。 –

+0

内部モジュールだけが変更されたのかどうかはわかりませんでした。ありがとうございます - 私は更新します。 – JcFx

+0

私は実際にシングルトンであるモジュールのためにこれを常に使用します。 – thomaux