Bagaimana untuk menjadikan semua sifat dalam skema Zod pilihan berdasarkan bendera ketersediaan produk tertentu?
P粉298305266
2023-08-30 22:37:05
<p>Saya mempunyai skema Zod untuk mengesahkan atribut produk untuk aplikasi e-dagang. Dalam skema saya, pada masa ini saya mempunyai atribut yang dipanggil <code>isLimitedEdition</code> Walau bagaimanapun, apabila <code>isLimitedEdition</code> ditetapkan kepada benar , saya mahu semua sifat lain dalam skema menjadi pilihan. </p>
<p>Ini ialah seni bina sedia ada:</p>
<pre class="brush:php;toolbar:false;">const productProperties = z.object({
nama: z.string().nonempty(),
perihalan: z.string().nonempty(),
harga: z.number().positive(),
kategori: z.string().nonempty(),
jenama: z.string().nonempty(),
isFeatured: z.boolean().default(false),
isLimitedEdition: z.boolean().default(false),
});</pre>
<p>Dalam seni bina ini, saya ingin melaksanakan gelagat di mana jika isLimitedEdition ditetapkan kepada benar, semua sifat (nama, perihalan, harga, kategori, jenama, isFeatured) menjadi pilihan. </p>
<p>Bagaimanakah saya boleh mengubah suai skema ini untuk mencapai tingkah laku yang diingini? Saya akan berterima kasih atas sebarang panduan atau contoh kod untuk membantu saya melaksanakan logik ini dengan betul. Terima kasih terlebih dahulu! </p>
<p>Saya mencuba kaedah <kod>memperhalusi</code>
Anda boleh menggunakan
discriminatedUnion
untuk mencapai ini: