Я пытаюсь реализовать шаблон Service Locator в TypeScript.
Вот мой код:
//due to only partial knowledge of TypeScript
private static serviceMap: Map<string, any>;
public static get<T>(): T {
// firstly lazily register all of the necessary services if this is the
// first time calling get.
if(this.serviceMap == undefined){
this.init();
}
let service = this.serviceMap.get(T.name) //issue
if(service == undefined){
throw Error("You must register the service before retrieving it.")
}
return service;
}
Проблема в строке, помеченной как проблема. Как вы видите, я пытаюсь получить имя типа класса, который я передаю в метод. Когда я пытаюсь вызвать T.name, я получаю эту ошибку:
TS2693: «T» относится только к типу, но здесь используется в качестве значения.
Как я могу получить имя класса типа T.
Я новичок в TypeScript, поэтому заранее прошу прощения, если ответ очень прост.