typescript - Hur man slår ihop en ZodEffect med en ZodObject


Jag har två scheman, jag skulle vilja återanvända det första schemat i det andra schemat, detta fungerar bra när det första schemat inte använder refine- eller super-fine-metoderna. Enligt dokumentationen borde detta vara möjligt genom att helt enkelt skicka det andra schemat som ett argument till merge-metoden i det första schemat. Jag får ett typfel som säger att det första schemat är av typen ZodEffects, finns det ett sätt att härleda det underliggande objektet?

import { z } from 'zod';

const FirstSchema = z.object({
  name: z.string().min(1),
});

const SeccondSchema = z
  .object({
    lastname: z.string().min(1),
  })
  .refine((data) => data.lastname.includes('foo'));

const MergedSchema = FirstSchema.merge(SeccondSchema); // <-- How to convert ZodEffect to ZodObject?

Här är ett exempel i Stack Blitz med mitt fel: https://stackblitz.com/edit/typescript-r9on2v?file=index.ts

Svar #1

Löst genom att använda innerType-metoden

const MergedSchema = FirstSchema.merge(SeccondSchema.innerType());

Relaterade artiklar