2013-04-25 42 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版本解決它) – 2016-01-11 15:35:41

回答

94

可以導入類直接,它可以讓你有你想要的用法。

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

定義保持不變。

// path/logger.ts 
export class Logger { 

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

這應該是被接受的答案:) – 2016-09-24 06:11:12

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

的變化,以模塊內部如何有助於類型系統不是與此有關。 – 2013-04-25 07:15:42

+0

我不清楚它是否只是內部模塊正在改變。謝謝 - 我會更新。 – JcFx 2013-04-25 07:17:36

+0

我一直使用這個模塊,實際上是單身人士。 – thomaux 2013-04-25 12:05:04

相關問題