0Pricing
TypeScript Academy · Урок

Переменные окружения и типизация конфигурации

Типизируйте process.env с помощью проверяемого модуля конфигурации

«Переменные окружения и типизация конфигурации» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

Типизация process.env предотвращает ошибки во время выполнения, вызванные отсутствующими переменными окружения или переменными с неверным типом.

Проблема

Значения process.env всегда имеют тип string | undefined. Доступ к ним без проверки приводит к ошибкам.
const port = process.env.PORT; // string | undefined
// server.listen(port); // could be undefined!

Дополнение модуля для process.env

Расширьте ProcessEnv в файле глобального объявления, чтобы типизировать известные переменные окружения.
declare global {
  namespace NodeJS {
    interface ProcessEnv {
      PORT: string;
      DATABASE_URL: string;
      NODE_ENV: 'development' | 'staging' | 'production';
    }
  }
}

Шаблон модуля конфигурации

Создайте типизированный модуль конфигурации, который проверяет и экспортирует переменные окружения.
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 для проверки окружения

Проверяйте переменные окружения при запуске с помощью Zod для полноценной проверки во время выполнения.
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 с TypeScript

Загружайте файлы .env с помощью dotenv до обращения к process.env.
import 'dotenv/config';
// Or:
import dotenv from 'dotenv';
dotenv.config();

Строгий доступ к env

Всегда обращайтесь к окружению через модуль конфигурации, а не напрямую через process.env в коде приложения.

Конфигурация для разных окружений

Используйте NODE_ENV для загрузки файлов конфигурации, предназначенных для разных окружений.
const envFile = `.env.${process.env.NODE_ENV ?? 'development'}`;
dotenv.config({ path: envFile });

Маскирование секретов в журналах

Никогда не журналируйте объекты конфигурации, содержащие секреты. Маскируйте конфиденциальные поля.
console.log({ ...config, dbPassword: '***', apiKey: '***' });

Типобезопасные флаги функций

Типизируйте переменные окружения, задающие флаги функций.
const flags = {
  enableBeta: process.env.ENABLE_BETA === 'true',
  logLevel: (process.env.LOG_LEVEL ?? 'info') as 'debug' | 'info' | 'warn',
};

Тестирование с переменными окружения

Используйте файл .env.test и загружайте его при настройке тестов.
// tests/setup.ts
process.env.DATABASE_URL = 'sqlite:///:memory:';
process.env.NODE_ENV = 'test';

Быстрая проверка

Каков тип TypeScript у `process.env.PORT` без какого-либо дополнения?

Итоги

Расширяйте ProcessEnv с помощью дополнения модуля или используйте модуль конфигурации Zod, чтобы типизировать и проверять переменные окружения при запуске. Всегда обращайтесь к окружению через модуль конфигурации, а не напрямую.

Часто задаваемые вопросы

Урок «Переменные окружения и типизация конфигурации» бесплатный?

Да — полный текст урока «Переменные окружения и типизация конфигурации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Переменные окружения и типизация конфигурации»?

Типизируйте process.env с помощью проверяемого модуля конфигурации Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Переменные окружения и типизация конфигурации»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка TypeScript с Node.js
  2. Типизация запросов и ответов Express
  3. Типизированное промежуточное ПО и обработчики ошибок
  4. Переменные окружения и типизация конфигурации
← Назад к TypeScript Academy