Kal_Torak
Kal_Torak

Reputation: 2551

How to access static methods in TypeScript

I'm trying to do this, but it's not working like I'd expect.

(I'm using the AMD option)

//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

How do you do logger.log()?

Upvotes: 77

Views: 88604

Answers (2)

Jude Fisher
Jude Fisher

Reputation: 11294

This answer was correct at time of posting. It is now deprecated. See Dimitris' answer for a better current solution.

Using a class, you can't. You're always going to have to call {module}.{class}.{function}

But you can drop the class altogether and just call {module}.{function}:

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

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

Upvotes: 13

Dimitris
Dimitris

Reputation: 13660

You can import classes directly, which allows you to have the usage you want.

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

And the definition stays the same.

// path/logger.ts
export class Logger {

    static Log() {
        ...
    }
}

Upvotes: 176

Related Questions