Переменные окружения и типизация конфигурации
Типизируйте process.env с помощью проверяемого модуля конфигурации
«Переменные окружения и типизация конфигурации» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Добро пожаловать
Проблема
const port = process.env.PORT; // string | undefined
// server.listen(port); // could be undefined!Дополнение модуля для process.env
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 для проверки окружения
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
import 'dotenv/config';
// Or:
import dotenv from 'dotenv';
dotenv.config();Строгий доступ к 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',
};Тестирование с переменными окружения
// tests/setup.ts
process.env.DATABASE_URL = 'sqlite:///:memory:';
process.env.NODE_ENV = 'test';Быстрая проверка
Итоги
Часто задаваемые вопросы
Урок «Переменные окружения и типизация конфигурации» бесплатный?
Да — полный текст урока «Переменные окружения и типизация конфигурации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.
Все уроки этого курса
- Настройка TypeScript с Node.js
- Типизация запросов и ответов Express
- Типизированное промежуточное ПО и обработчики ошибок
- Переменные окружения и типизация конфигурации