0Pricing
TypeScript Academy · บทเรียน

ตัวแปรสภาพแวดล้อมและการระบุชนิดการกำหนดค่า

ระบุชนิด process.env ด้วยโมดูลการกำหนดค่าที่ผ่านการตรวจสอบ

ตัวแปรสภาพแวดล้อมและการระบุชนิดการกำหนดค่า เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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';
    }
  }
}

รูปแบบโมดูลการกำหนดค่า

สร้างโมดูล config ที่มีชนิดกำกับ เพื่อตรวจสอบและส่งออกตัวแปรสภาพแวดล้อม
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 อย่างเคร่งครัด

เข้าถึง env ผ่านโมดูล config เสมอ และอย่าเข้าถึง process.env โดยตรงในโค้ดแอปพลิเคชัน

การกำหนดค่าสำหรับสภาพแวดล้อมที่แตกต่างกัน

ใช้ NODE_ENV เพื่อโหลดไฟล์การกำหนดค่าตามสภาพแวดล้อม
const envFile = `.env.${process.env.NODE_ENV ?? 'development'}`;
dotenv.config({ path: envFile });

การปกปิดข้อมูลลับในบันทึก

อย่าบันทึกออบเจ็กต์ config ที่มีข้อมูลลับโดยเด็ดขาด ให้ปกปิดฟิลด์ที่มีข้อมูลอ่อนไหว
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 เพื่อกำหนดชนิดและตรวจสอบตัวแปรสภาพแวดล้อมเมื่อเริ่มต้น ควรเข้าถึง env ผ่านโมดูลการกำหนดค่าเสมอ และไม่เข้าถึงโดยตรง

คำถามที่พบบ่อย

บทเรียน “ตัวแปรสภาพแวดล้อมและการระบุชนิดการกำหนดค่า” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวแปรสภาพแวดล้อมและการระบุชนิดการกำหนดค่า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวแปรสภาพแวดล้อมและการระบุชนิดการกำหนดค่า”

ระบุชนิด process.env ด้วยโมดูลการกำหนดค่าที่ผ่านการตรวจสอบ คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 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