ใช้ typescript type ใน yup schema

Sep 24 2020

สามารถใช้ประเภท typescript ในการตรวจสอบความถูกต้องได้หรือไม่?

คุณสามารถ:

yup.string().oneOf(['salami', 'tuna', 'cheese']);

ในส่วนประกอบของฉันฉันได้กำหนดประเภทนี้ไว้:

type toppings = 'salami' | 'tuna' | 'cheese';

ฉันสามารถรวมสองสิ่งนี้ได้หรือไม่? ได้แก่ :

type toppings = 'salami' | 'tuna' | 'cheese';
yup.string().oneOf(toppings); // <- how?

คำตอบ

1 Vencovsky Sep 24 2020 at 19:09

คุณสามารถใช้การyup.mixed<TYPE>()ส่งผ่านประเภททั่วไปของคุณ

yup.mixed<toppings>().oneOf(['salami', 'tuna', 'cheese']);

คุณกำลังส่งผ่านเป็นyup.string()แต่ไม่ใช่สตริงเป็นประเภท'salami' | 'tuna' | 'cheese'ที่ประกอบด้วยสตริง แต่ไม่ใช่สตริงใด ๆ ดังนั้นคุณต้องใช้.mixedเพื่อกำหนดค่าเฉพาะ

หากคุณไม่ต้องการส่งผ่านอาร์เรย์ด้วยค่าประเภทโดยตรงคุณสามารถดูคำถามนี้เกี่ยวกับวิธีสร้างได้