特定の製品可用性フラグに基づいて、Zod スキーマのすべてのプロパティをオプションにするにはどうすればよいですか?
P粉298305266
P粉298305266 2023-08-30 22:37:05
0
1
474
<p>電子商取引アプリケーションの製品属性を検証するための Zod スキーマがあります。現在、私のスキーマには、製品の供給が限定されているかどうかを示す <code>isLimitedEdition</code> という属性があります。ただし、<code>isLimitedEdition</code> が true に設定されている場合、スキーマ内の他のすべてのプロパティをオプションにする必要があります。 </p> <p>これは既存のアーキテクチャです:</p> <pre class="brush:php;toolbar:false;">const productProperties = z.object({ 名前: z.string().nonempty()、 説明: z.string().nonempty()、 価格: z.number().positive()、 カテゴリ: z.string().nonempty()、 ブランド: z.string().nonempty()、 isFeatured: z.boolean().default(false)、 isLimitedEdition: z.boolean().default(false)、 });</pre> <p>このアーキテクチャでは、isLimitedEdition が true に設定されている場合、すべてのプロパティ (名前、説明、価格、カテゴリ、ブランド、isFeatured) がオプションになる動作を実装したいと考えています。 </p> <p>望ましい動作を実現するためにこのスキーマを変更するにはどうすればよいですか?このロジックを正しく実装するためのガイダンスやコード例があれば幸いです。よろしくお願いします! </p> <p><code>refine</code> メソッドを試しましたが成功しませんでした</p>
P粉298305266
P粉298305266

全員に返信(1)
P粉225961749

これを実現するには、discriminatedUnion を使用できます:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート