Для чего объявляется статическое поле типа этого же класса?
Пока слабо знаком с TypeScript, но вот с таким ни в одном языке пока не приходилось встречаться, увидел данный код в бойлерплейте ASP.NET Core + React-Redux + TS. Объясните, пожалуйста, зачем нужно объявлять статическое поле того же типа, в описании которого оно и объявляется?
import { AxiosResponse } from 'axios';
import { BaseService } from './base.service';
import { IAuthUser, ICredentials } from '../store/auth/types';
/**
* Auth API abstraction layer communication via Axios (typescript singleton pattern)
*/
class AuthService extends BaseService {
private static _authService: AuthService; // вот эта строка
private static _controllerName: string = 'Auth';
private constructor(controllerName: string) {
super(controllerName);
}
public static get Instance(): AuthService {
return this._authService || (this._authService = new this(this._controllerName));
}
public async logoutAsync(): Promise<AxiosResponse> {
return await this.$http.post('Logout');
}
public async loginAsync(credentials: ICredentials): Promise<IAuthUser> {
const { data } = await this.$http.post<IAuthUser>('Login', credentials);
return data;
}
}
export const AuthApi = AuthService.Instance;
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Кусочек отсюда
Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.