1. imperative programming -> is like giving a chef step-by-step instructions on how to make a pizza.

  2. declarative programming -> is like ordering a pizza without being concerned about the steps it takes to make the pizza.

  3. circular dependency Kamu punya dua file utama:

    env.config.ts โ†’ bertanggung jawab membaca .env, membuat config, dan menyiapkan httpsAgent, serta validasi.

    logger.ts โ†’ bertanggung jawab untuk mencatat log (log info, debug, warning, error).

    Keduanya saling berhubungan karena:

    logger.ts mengimpor config (untuk membaca app.debug).

    Kamu berencana membuat env.config.ts juga menggunakan Logger untuk mengganti console.log.

    Sehingga nanti terjadi saling impor dua arah:

    env.config.ts  --->  logger.ts
    logger.ts      --->  env.config.ts