การกำหนดค่าที่ตรวจสอบด้วยสคีมา
ตรวจสอบการกำหนดค่าตั้งแต่เริ่มต้นด้วยสคีมา
การกำหนดค่าที่ตรวจสอบด้วยสคีมา เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตรวจสอบการกำหนดค่าตอนเริ่มต้น
ตัวช่วยแปลงค่าด้วยตนเองใช้งานได้ แต่สคีมาจะประกาศโครงสร้างและกฎทั้งหมดไว้ในที่เดียว และตรวจสอบทุกอย่างตอนเริ่มต้น โดยหยุดทำงานอย่างรวดเร็วก่อนที่แอปจะเริ่มให้บริการคำขอ
ความหมายของการหยุดทำงานอย่างรวดเร็ว
การหยุดทำงานอย่างรวดเร็วหมายถึงกระบวนการจะออกทันทีพร้อมข้อความที่ชัดเจนเมื่อการกำหนดค่าไม่ถูกต้อง แทนที่จะล้มเหลวภายหลังในเส้นทางโค้ดที่เข้าใจได้ยากระหว่างการประมวลผลคำขอ
สคีมาด้วย zod
ไลบรารีอย่าง zod ช่วยให้คุณอธิบายการกำหนดค่าในรูปแบบประกาศได้ แต่ละฟิลด์ระบุประเภทและข้อจำกัดของตนเอง การตรวจสอบจะสร้างออบเจ็กต์ที่มีการระบุประเภทอย่างครบถ้วน
import { z } from "zod";
const EnvSchema = z.object({
PORT: z.coerce.number().int().positive(),
NODE_ENV: z.enum(["development", "production"]),
DATABASE_URL: z.string().url(),
});มีการแปลงค่าในตัว
สคีมาสามารถแปลงสตริงเป็นประเภทที่ถูกต้องได้ z.coerce.number() เปลี่ยน "8081" เป็น 8081 ทำให้สตริงจาก env กลายเป็นตัวเลขจริงอย่างปลอดภัย
// "8081" -> 8081 via z.coerce.number()แปลงค่าและหยุดทำงานอย่างรวดเร็ว
การเรียก parse จะตรวจสอบทุกอย่าง หากมีสิ่งใดไม่ถูกต้อง zod จะโยนข้อผิดพลาดโดยละเอียด ซึ่งคุณสามารถบันทึกและสั่งให้ออกจากกระบวนการได้ ทำให้การเริ่มต้นหยุดลงทันที
function loadConfig() {
const result = EnvSchema.safeParse(process.env);
if (!result.success) {
console.error(result.error.format());
process.exit(1);
}
return result.data;
}อนุมานประเภท
ประโยชน์สำคัญอย่างหนึ่งคือ ประเภทที่ผ่านการตรวจสอบแล้วจะได้มาจากสคีมาด้วย z.infer สคีมาจึงเป็นแหล่งข้อมูลจริงเพียงแห่งเดียวสำหรับทั้งการตรวจสอบขณะทำงานและประเภทขณะคอมไพล์
type Env = z.infer<typeof EnvSchema>;
// { PORT: number; NODE_ENV: "development" | "production"; DATABASE_URL: string }ข้อผิดพลาดที่อธิบายชัดเจน
ตัวตรวจสอบสคีมาจะแจ้งอย่างแม่นยำว่าฟิลด์ใดล้มเหลวและเพราะเหตุใด เช่น "PORT: คาดว่าจะเป็นจำนวนบวก" ข้อความที่ชัดเจนทำให้วินิจฉัยการกำหนดค่าผิดได้ง่าย
// e.g. { PORT: { _errors: ["Expected number, received nan"] } }ฟิลด์ที่ไม่บังคับและฟิลด์ค่าเริ่มต้น
สคีมาแสดงความไม่บังคับและค่าเริ่มต้นได้โดยตรง ช่วยตัดตรรกะค่าทดแทนที่เขียนเอง และรวมกฎทั้งหมดไว้ในการประกาศเดียว
const Schema = z.object({
LOG_LEVEL: z.enum(["info", "debug"]).default("info"),
TIMEOUT_MS: z.coerce.number().optional(),
});ตรวจสอบครั้งเดียว ใช้ได้ทุกที่
เรียกใช้การตรวจสอบเพียงครั้งเดียวตอนเริ่มระบบ แล้วส่งออกออบเจ็กต์ที่มีการระบุประเภท โค้ดส่วนอื่นจึงเชื่อถือได้ว่าการกำหนดค่ามีอยู่และมีรูปแบบถูกต้อง
export const config = loadConfig();นอกเหนือจาก Env: ไฟล์และอาร์กิวเมนต์
สคีมาเดียวกันสามารถตรวจสอบการกำหนดค่าจากไฟล์ JSON หรือแหล่งข้อมูลที่ผสานกันได้ ไม่ใช่เพียง process.env ขั้นตอนการตรวจสอบไม่ขึ้นอยู่กับแหล่งที่มาของค่า
เหตุใดสคีมาจึงดีกว่าการตรวจสอบเฉพาะจุด
สคีมารวมการตรวจสอบและการระบุประเภทเข้าด้วยกัน สร้างข้อผิดพลาดที่สม่ำเสมอและมีรายละเอียด รองรับการแปลงค่าและค่าเริ่มต้น และหยุดทำงานอย่างรวดเร็ว โดยแทนที่การตรวจสอบ if ด้วยตนเองที่กระจัดกระจายด้วยการประกาศเดียว
ตรวจสอบอย่างรวดเร็ว
ตรวจสอบความเข้าใจสั้น ๆ เกี่ยวกับบทเรียนนี้
ทบทวน
สคีมาการกำหนดค่า (เช่น zod) ประกาศประเภท ข้อจำกัด การแปลงค่า และค่าเริ่มต้นไว้ในที่เดียว ตรวจสอบตอนเริ่มต้นเพื่อหยุดทำงานอย่างรวดเร็วพร้อมข้อผิดพลาดที่อธิบายชัดเจน และช่วยให้คุณใช้ z.infer อนุมานการกำหนดค่าที่มีประเภทจากแหล่งข้อมูลจริงเพียงแห่งเดียวนั้น
คำถามที่พบบ่อย
บทเรียน “การกำหนดค่าที่ตรวจสอบด้วยสคีมา” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนดค่าที่ตรวจสอบด้วยสคีมา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดค่าที่ตรวจสอบด้วยสคีมา”
ตรวจสอบการกำหนดค่าตั้งแต่เริ่มต้นด้วยสคีมา คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนดค่าที่ตรวจสอบด้วยสคีมา” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกำหนดชนิดข้อมูลให้ตัวแปรสภาพแวดล้อม
- การกำหนดค่าที่ตรวจสอบด้วยสคีมา
- การซ้อนชั้นการกำหนดค่าและค่าเริ่มต้น
- ข้อมูลลับและความปลอดภัยด้านชนิดข้อมูล