type-safe process.env ด้วย declaration merging
process.env ทุกตัวเป็น string | undefined โดยค่าเริ่มต้น — merge declaration ทำให้ autocomplete และ type safe ได้ง่ายๆ
ปัญหา: TypeScript บอกว่า process.env.MY_VAR มี type เป็น string | undefined ทุกตัว ทำให้ต้องเช็คซ้ำทุกที่
แก้ด้วย declaration merging ใน src/env.d.ts:
declare namespace NodeJS {
interface ProcessEnv {
NODE_ENV: 'development' | 'production' | 'test';
DATABASE_URL: string;
API_KEY: string;
PORT?: string; // optional
}
}
หลังจากนี้ process.env.NODE_ENV จะ type เป็น 'development' | 'production' | 'test' ทันที พร้อม autocomplete
ข้อจำกัด: วิธีนี้ไม่ได้ validate ค่าจริงตอน runtime — ถ้าต้องการ validate และ throw error เมื่อ env var หาย ควรใช้ Zod หรือ t3-env แทน เหมาะสำหรับ project ขนาดใหญ่ที่ strict มากกว่า