Comments (6)
I'd recommend checking out this guide for some pointers on writing generic functions that accept Zod schemas: https://github.com/colinhacks/zod?tab=readme-ov-file#writing-generic-functions
from zod.
Thanks @colinhacks, although having to infer the return type of a generic parsing function feels a bit icky. Wonder if there is a way to avoid that
from zod.
As it means that we're actually short circuiting the return type when we return the value of schema.parse
, which could lead to human error that is not caught by TS
from zod.
I have found that
const parseSchema = <Input, Output>(
data: any,
schema: z.ZodType<Output, ZodTypeDef, Input>,
): Output => {
return schema.parse(data)
}
Fixes this without having to resort into type casting.
from zod.
This is the recommended way to write that function:
// parse any data into schema or fail
const parseSchema = <U extends z.ZodType>(data: any, schema: U): z.infer<U> => {
return schema.parse(data);
};
from zod.
This is the recommended way to write that function:
// parse any data into schema or fail const parseSchema = <U extends z.ZodType>(data: any, schema: U): z.infer<U> => { return schema.parse(data); };
Can I ask why is that recommended over what I've done? Just for my understanding
from zod.
Related Issues (20)
- "Type instantiation is excessively deep and possibly infinite." when using Zod versions 3.23.0 and 3.23.1 together. HOT 7
- JSDoc hints are lost after using `.extend` HOT 3
- Default enum generic
- Zod dealing with image object HOT 2
- Password match validation don't hide error, when input name not mentioned in refine() 'path' has changed HOT 1
- Huge memory and performance gap between `parse` and `parseAsync` HOT 2
- Override safeParse and parse behavior at a given key HOT 9
- z.literal with objects HOT 1
- question: can I generate a zeroed out object from a schema with validation? HOT 1
- Reversing nullable on schema HOT 1
- feat: single method to comine `.unwrap().unwrap()` HOT 1
- zod a field whose type is jsonLogic.RulesLogic. From type to zod HOT 1
- `z.literal` message not customizable HOT 3
- Add Search Bar Functionality to zod HOT 1
- Inability to retrieve keys from z.nativeEnum type
- Large declaration files for flattened zod schema HOT 1
- Can not use branded enum options HOT 1
- Passing `RawCreateParams` to `z.tuple()` doesn't apply to all errors generated by `z.tuple()`. HOT 3
- Organizational GitHub Account & Profile
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zod.