Zod กับ TypeScript Validation ที่สมบูรณ์แบบ
Zod เป็น schema validation library ที่ออกแบบมาสำหรับ TypeScript โดยเฉพาะ จุดเด่นสำคัญคือสามารถ infer TypeScript type จาก schema ได้โดยอัตโนมัติ ทำให้ไม่ต้องเขียน type และ validation แยกกัน
การใช้ Zod ใน API route ช่วยป้องกัน invalid data จาก client ได้อย่างมีประสิทธิภาพ โดย parse request body ผ่าน schema ก่อนนำไปใช้ ถ้า validation ไม่ผ่านจะ throw ZodError ที่มี error message ละเอียดมาก
การสร้าง custom validator ทำได้ด้วย .refine() หรือ .superRefine() เช่น validate ว่า email มีอยู่จริงใน database หรือว่าตัวเลขอยู่ในช่วงที่ต้องการ
การใช้ Zod ร่วมกับ React Hook Form ผ่าน @hookform/resolvers/zod ทำให้ validation ทำงานทั้ง client-side และ server-side โดยใช้ schema เดียวกัน ลด code duplication ได้มาก
สำหรับ error message ภาษาไทย สามารถ custom ได้ผ่าน errorMap option หรือใส่ message ใน schema โดยตรง เช่น z.string().min(1, "กรุณากรอกข้อมูล")