0Pricing
TypeScript Academy · Lekcja

Zmienne środowiskowe i typowanie konfiguracji

Nadaj typ process.env za pomocą zweryfikowanego modułu konfiguracji.

Zmienne środowiskowe i typowanie konfiguracji to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Typowanie process.env zapobiega błędom w czasie działania wynikającym z brakujących lub nieprawidłowo typowanych zmiennych środowiskowych.

Problem

Wartości process.env zawsze mają typ string | undefined. Uzyskiwanie do nich dostępu bez sprawdzenia powoduje błędy.
const port = process.env.PORT; // string | undefined
// server.listen(port); // could be undefined!

Augmentacja modułu dla process.env

Należy rozszerzyć ProcessEnv w globalnym pliku deklaracji, aby typować znane zmienne środowiskowe.
declare global {
  namespace NodeJS {
    interface ProcessEnv {
      PORT: string;
      DATABASE_URL: string;
      NODE_ENV: 'development' | 'staging' | 'production';
    }
  }
}

Wzorzec modułu konfiguracji

Należy utworzyć typowany moduł konfiguracji, który waliduje i eksportuje zmienne środowiskowe.
function requireEnv(key: string): string {
  const val = process.env[key];
  if (!val) throw new Error(`Missing env var: ${key}`);
  return val;
}
export const config = {
  port: parseInt(requireEnv('PORT')),
  dbUrl: requireEnv('DATABASE_URL'),
};

Zod do walidacji zmiennych środowiskowych

Należy walidować zmienne środowiskowe podczas uruchamiania za pomocą Zod, aby przeprowadzać kompleksową kontrolę w czasie działania.
import { z } from 'zod';
const envSchema = z.object({
  PORT: z.string().transform(Number),
  DATABASE_URL: z.string().url(),
  NODE_ENV: z.enum(['development', 'production']),
});
export const env = envSchema.parse(process.env);

dotenv z TypeScript

Należy wczytywać pliki .env za pomocą dotenv przed uzyskaniem dostępu do process.env.
import 'dotenv/config';
// Or:
import dotenv from 'dotenv';
dotenv.config();

Ścisły dostęp do zmiennych środowiskowych

Należy zawsze uzyskiwać dostęp do zmiennych środowiskowych za pośrednictwem modułu konfiguracji, a w kodzie aplikacji nigdy bezpośrednio przez process.env.

Konfiguracja dla różnych środowisk

Należy używać NODE_ENV do wczytywania plików konfiguracyjnych właściwych dla danego środowiska.
const envFile = `.env.${process.env.NODE_ENV ?? 'development'}`;
dotenv.config({ path: envFile });

Maskowanie sekretów w logach

Nie należy nigdy rejestrować obiektów konfiguracji zawierających sekrety. Należy maskować poufne pola.
console.log({ ...config, dbPassword: '***', apiKey: '***' });

Flagi funkcjonalności z kontrolą typów

Należy typować zmienne środowiskowe przechowujące flagi funkcjonalności.
const flags = {
  enableBeta: process.env.ENABLE_BETA === 'true',
  logLevel: (process.env.LOG_LEVEL ?? 'info') as 'debug' | 'info' | 'warn',
};

Testowanie ze zmiennymi środowiskowymi

Należy używać pliku .env.test i wczytywać go podczas konfiguracji testów.
// tests/setup.ts
process.env.DATABASE_URL = 'sqlite:///:memory:';
process.env.NODE_ENV = 'test';

Szybki sprawdzian

Jaki jest typ TypeScript dla `process.env.PORT` bez żadnej augmentacji?

Podsumowanie

Należy rozszerzyć ProcessEnv za pomocą augmentacji modułu albo użyć modułu konfiguracji Zod do typowania i walidowania zmiennych środowiskowych podczas uruchamiania. Zawsze należy uzyskiwać dostęp do zmiennych środowiskowych przez moduł konfiguracji, nigdy bezpośrednio.

Często zadawane pytania

Czy lekcja „Zmienne środowiskowe i typowanie konfiguracji” jest bezpłatna?

Tak — pełny tekst „Zmienne środowiskowe i typowanie konfiguracji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zmienne środowiskowe i typowanie konfiguracji”?

Nadaj typ process.env za pomocą zweryfikowanego modułu konfiguracji. Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?

Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Zmienne środowiskowe i typowanie konfiguracji”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?

Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konfigurowanie TypeScript z Node.js
  2. Typowanie żądań i odpowiedzi Express
  3. Typowane middleware i moduły obsługi błędów
  4. Zmienne środowiskowe i typowanie konfiguracji
← Powrót do TypeScript Academy