Back to results
alii/azs(opens in a new tab)
Language: TypeScript
🤓 Amplify Zod schemas with methods
- stars
- 342
- watchers
- 2
- forks
- 5
- open issues
- 0
- Last updated
- 01/15/2024
Language: TypeScript
🤓 Amplify Zod schemas with methods
azs allows you to add virtual methods to zod schemas, tying data types to functions. here's a small example for a user type.
A more advanced example can be found here.
import {z} from 'zod'; import {azs} from 'azs'; const userSchema = z.object({ age: z.number(), name: z.string(), github: z.string().url(), }); const schema = azs(userSchema, { // Basic example isAdult: user => { return user.age >= 18; }, // Methods can take arguments, but the // first argument will always be the parsed // value. You don't have to specify a type // for the first argument. is: (user, name: string) => { return user.name === name; }, // Or, you can access `this` which will be // the parsed value. Notice how this is a // method, not an arrow function property. getName() { return this.name; }, }); const user = schema.parse(someRandomJSONThatMightBeAUser); user.isAdult(); user.getName(); user.is('Colin McDonnell');