Я строю проект, используя VueJS с Typescript. Я чувствую себя комфортно, используя сервисы вместо любой библиотеки управления состоянием, такой как Vuex. Но при написании сервисов я всегда должен копировать и вставлять некоторый код в каждый класс сервисов, чтобы сделать его отдельным:
class MyService {
private static Instance: MyService;
public static getInstance() {
if (!MyService.Instance) {
MyService.Instance = new MyService();
}
return MyService.Instance;
}
private constructor() {}
}
Я думал о декораторах, поэтому мой вопрос в том, можем ли мы действительно избавиться от этого Приведенный выше код и использовать декоратор, я попытался несколько неудачных попыток, как:
function service<T>(): T {
const Instance: T | null = null;
return !Instance ? new T() : Instance;
}
@service<MyService>()
или
function service(constructor: Function) {
const Instance: MyService | null = null;
return !Instance ? new MyService() : Instance;
}
@service
, но они не будут работать. Я не уверен, что декоратор подойдет или нет, здесь может работать другой метод, но у меня нет ни малейшего представления, никаких предложений?