I recently reviewed a PR that uses Zod to validate the enum type. The code looks like this in Typescript:
export enum SubscriptionTierEnum {
FREE = 'FREE',
BASIC = 'BASIC',
PRO = 'PRO',
ENTERPRISE = 'ENTERPRISE',
}
const subscriptionValues = Object.values(SubscriptionTierEnum) as [
SubscriptionTierEnum,
...SubscriptionTierEnum[]
];
export const SubscriptionTierSchema = z.enum(subscriptionValues);
This code works, but it can be simplified using Zod's native enum support (doc). Instead of creating an array of enum values using Object.values
, you can directly use the enum in the z.nativeEnum
function. Here's how you can do it:
export const SubscriptionTierSchema = z.nativeEnum(SubscriptionTierEnum);
This approach is cleaner and more efficient 🥰