如何在TypeScript中访问静态方法

Kal*_*rak 60 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
Run Code Online (Sandbox Code Playgroud)

你是怎么做logger.log()的?

Dim*_*ris 150

您可以直接导入类,这样您就可以获得所需的用法.

// usage
import { Logger } from 'path/logger.ts'
Logger.Log();
Run Code Online (Sandbox Code Playgroud)

而且定义保持不变.

// path/logger.ts
export class Logger {

    static Log() {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)


Jud*_*her 12

这个答案在发布时是正确的.它已被弃用.请参阅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
Run Code Online (Sandbox Code Playgroud)

  • @SamVloeberghs因为在询问时它是正确的.下面的答案描述了最近添加到TypeScript的功能. (2认同)