특정 제품 가용성 플래그를 기반으로 Zod 스키마의 모든 속성을 선택적으로 만드는 방법은 무엇입니까?
P粉298305266
2023-08-30 22:37:05
<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().긍정적(),
카테고리: 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>
discriminatedUnion
를 사용하여 이를 달성할 수 있습니다: