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