Подтвердить что ты не робот

Как получить доступ к статическим методам в 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()?

4b9b3361

Ответ 1

Вы можете напрямую импортировать классы, что позволяет вам использовать нужное вам использование.

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

И определение остается неизменным.

// path/logger.ts
export class Logger {

    static Log() {
        ...
    }
}

Ответ 2

Этот ответ был верным на момент публикации. Сейчас это устарело. Смотрите ответ Димитриса для лучшего текущего решения.

Используя класс, вы не можете. Вы всегда должны будете вызывать {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