Оглавление
Config
необходим для того, чтобы во всем приложении были доступны параметры конфигурации приложения.
Config
должен быть доступен во всем приложении
В Config
могут находится различные переменные:
Config
должен находится в общедоступном Shared
слое.
Рекомендуется спрятать взаимодействие с Config
за абстракцию:
export type Config = {
apiUrl: string;
};
export class ConfigService {
#config: Config | undefined;
constructor() {
this.config = {} as Config;
}
init(config: Config) {
this.config = config as Config;
}
get config(): Config {
if (!this.#config) {
throw Error('ConfigService is not initialized');
}
return this.#config;
}
set config(config: Config) {
this.#config = config;
}
}
export const configService = new ConfigService();
Инициализация ConfigService
должна происходит в Application
слое. Application
слой достанет из env
данные и передаст их в ConfigService:
configService.init({
apiUrl: process.env.NEXT_PUBLIC_API_URL,
});