Оглавление

Назначение

Config необходим для того, чтобы во всем приложении были доступны параметры конфигурации приложения.

Config должен быть доступен во всем приложении

В Config могут находится различные переменные:

Местоположение

Config должен находится в общедоступном Shared слое.

Untitled

ConfigService

Рекомендуется спрятать взаимодействие с 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,
});

Профиты