Традиционный синглтон паттерн используется для решения кейсов, когда код должен быть упакован в классе.
1 2 3 4 5 6 7 8 910111213141516171819
classSingleton{privatestaticinstance:Singleton;privateconstructor(){// сделать что-нибудь...}staticgetInstance(){if(!Singleton.instance){Singleton.instance=newSingleton();// ... здесь единожды выполняется инициализация ...}returnSingleton.instance;}someMethod(){}}letsomething=newSingleton();// Ошибка: конструктор 'Singleton' является// приватным.letinstance=Singleton.getInstance();// сделать что-нибудь с экземпляром...
Однако, если вам не нужна ленивая инициализация, вы можете вместо этого просто использовать namespace:
123456
namespaceSingleton{// ... здесь единожды выполняется инициализация ...exportfunctionsomeMethod(){}}// ИспользованиеSingleton.someMethod();
Предупреждение: Синглтон - это просто причудливое название для global
Для большинства проектов namespace можно заменить на module.
123456
// someFile.ts// ... здесь единожды выполняется инициализация ...exportfunctionsomeMethod(){}// Использованиеimport{someMethod}from'./someFile';