A lightweight TypeScript utility that integrates Zod schema validation with the Result type from neverthrow for streamlined robust error handling.
npm install zod-neverthrow 
A lightweight TypeScript utility that integrates Zod schema validation with the Result type from neverthrow for streamlined robust error handling.
``bash`
npm install zod-neverthrow zod neverthrowor
pnpm add zod-neverthrow zod neverthrow
This package requires the following peer dependencies:
- Zod
- neverthrow
`typescript
import { z } from 'zod/v4';
import { neverthrowParse } from 'zod-neverthrow/v4';
const UserSchema = z.object({
name: z.string(),
age: z.number(),
enabled: z.boolean(),
});
// Result<{ name: string; age: number; enabled: boolean; }, z.$ZodError<{ name: string; age: number; enabled: boolean; }>>
const result = neverthrowParse(UserSchema, {
name: 'John Doe',
age: 30,
enabled: true,
});
result.match(
(user) => console.log('User processed successfully:', user),
(error) => console.error('Invalid user data:', error.errors),
);
`
`typescript
import { z } from 'zod/v3';
import { neverthrowParse } from 'zod-neverthrow/v3';
const UserSchema = z.object({
name: z.string(),
age: z.number(),
enabled: z.boolean(),
});
// Result<{ name: string; age: number; enabled: boolean; }, z.ZodError
const result = neverthrowParse(UserSchema, {
name: 'John Doe',
age: 30,
enabled: true,
});
result.match(
(user) => console.log('User processed successfully:', user),
(error) => console.error('Invalid user data:', error.errors),
);
`
`typescript
import { z } from 'zod';
import 'zod-neverthrow';
const UserSchema = z.object({
name: z.string(),
age: z.number(),
enabled: z.boolean(),
});
// Result<{ name: string; age: number; enabled: boolean; }, z.ZodError
const result = UserSchema.neverthrowParse({
name: 'John Doe',
age: 30,
enabled: true,
});
result.match(
(user) => console.log('User processed successfully:', user),
(error) => console.error('Invalid user data:', error.errors),
);
``
MIT License