Tengo una función API que devuelve un usuario, por ejemplo. Quiero analizar la respuesta del servidor al tipo User de mi cliente. Digamos, por ejemplo, que quiero fusionar el nombre y el apellido de un usuario en una cadena para usar en mi código de cliente.
type User = { uuid: string email: string fullName: string } const UserSchema: z.ZodSchema<User, z.ZodTypeDef, unknown> = z.object({ uuid: z.string().uuid(), email: z.string().email(), firstName: z.string(), lastName: z.string() }).transform(response => ({ uuid: response.uuid, email: response.email, fullName: `${response.firstName} ${response.lastName}` })) y eso funciona perfectamente bien desde la perspectiva de TypeScript. Por ejemplo, si trato de establecer un valor que no sea una cadena en fullName dentro de la transform , muestra un error. PERO me permite agregar propiedades al resultado final sin mostrar ningún error:
...}).transform(response => ({ uuid: response.uuid, email: response.email, fullName: `${response.firstName} ${response.lastName}`, // here is an extra value that should not be here because it // doesn't exist in my client User type but TS allows it here blablabla: true, })) Tengo habilitados strict y estrictos strictNullChecks en mi archivo tsconfig. ¿Cómo puedo hacer visible un error en estos casos?