首页 > 其他分享 >[Typescript] Zod custom error message

[Typescript] Zod custom error message

时间:2024-11-19 15:40:11浏览次数:1  
标签:Typescript Zod validBooking BookingSchema error zodIssue message dueDate


const BookingSchema = z.object({
  roomType: z.string(),  
  dueDate: z
    .string({
      message: "invalid due date",
    })
    .date('date format is wrong'),
  numberOfGuests: z
    .number()
    .min(1, "there must be at least one guest")
    .max(4, "at most 4 guests are allowed"),
  price: z.number().positive("negative price, huh?"),
});

type Booking = z.infer<typeof BookingSchema>;

const validBooking: Booking = {
  roomType: "suite",
  dueDate: "2025-12-31",
  numberOfGuests: 3,
  price: 300,
};

try {
  // BookingSchema.parse({ ...validBooking, numberOfGuests: 0 });
  // BookingSchema.parse({ ...validBooking, price: -100 });
  BookingSchema.parse({ ...validBooking, dueDate: "-100" });
} catch (e) {
  if (e instanceof z.ZodError) {
    for (const zodIssue of e.issues) {
      console.error(zodIssue.code); // invalid_string
      console.error(zodIssue.message); // date format is wrong
      console.error(zodIssue.path); // ['dueDate']
    }
  }
}

 

标签:Typescript,Zod,validBooking,BookingSchema,error,zodIssue,message,dueDate
From: https://www.cnblogs.com/Answer1215/p/18554996

相关文章

  • A Message to Garcia
    《AMessagetoGarcia》(《致加西亚的信》)讲述了这样一个故事:1898年4月美国与西班牙之间爆发了争夺殖民地的战争。美国总统麦金利急需一名合适的特使去完成一项重要的任务——将信送给古巴的加西亚将军,因为要与加西亚将军合作对美国赢得战争胜利至关重要。美国陆军一位年轻的中......
  • HarmonyOS4+NEXT星河版入门与项目实战--------TypeScript语法(循环控制与函数方法)
    文章目录1、循环控制1、for循环与while循环2、数组快捷迭代方法2、函数1、function关键字2、可选参数3、默认参数4、匿名函数5、函数表达式6、结合使用7、函数声明案例1、循环控制1、for循环与while循环2、数组快捷迭代方法数组除了使用常规的for循环......
  • HarmonyOS4+NEXT星河版入门与项目实战--------TypeScript语法(变量声明与条件控制)
    文章目录1、变量声明1、格式与案例2、在线体验TypeScript2、条件控制1、if-else条件控制switch条件控制1、变量声明1、格式与案例TypeScript常见变量主要有string字符串、number数值、boolen布尔、any不确定类型、Object对象类型、Array数组类型以及......
  • HarmonyOS4+NEXT星河版入门与项目实战--------ArkTs语言与TypeScript语法
    文章目录1、ArkTs语言1、ArkTs特点2、ArkTs与Javascript关系2、TypeScript语法1、ArkTs语言在html的开发中,实现一个页面元素,比如Button,往往包含了以下三种要素:JS、HTML、CSS。JS处理逻辑与响应、HTML用来声明标签生成各种页面控件、CSS用来控制着也控件的样式......
  • 在 tsconfig.json 文件中,compilerOptions.types 字段用于指定 TypeScript 编译器应该
    在tsconfig.json文件中,compilerOptions.types字段用于指定TypeScript编译器应该包含的类型声明文件。这些类型声明文件提供了类型信息,使得TypeScript能够在编译时进行类型检查和提供智能提示。你提到的配置项指定了几个常用的类型声明文件,下面是对这些配置项的详细解释:配......
  • 从零到一构建并打包 React + TypeScript + Less组件库教程(四、Icon 图标组件库自动生
    了解流行组件库的Icon组件本系列目录如下:项目初始化搭建+代码规范集成组件库多产物编译及文档编写turborepo集成Icon图标组件库自动生成svg组件点击查看此次commit本篇文章技术来源于semidesign,参考了semidesign的icon组件库设计观察我们经常使用的组件......
  • Typescript面试题
    简述typescript简称ts,是js的一个超集,也是带有类型检测的js,拓展了js语法。优点:程序更容易理解;减少错误(编译期间排除常见错误);包容性强(兼容js)。特点:跨平台;面向对象(类、接口、枚举);类型检测。 ts的数据类型除js的类型外,还包含enum(枚举)、any(任意值)、void(表示无,常用于表示无返回值......
  • 从零到一构建并打包 React + TypeScript + Less组件库教程(二、组件库编译多产物及文档
    本系列目录如下:项目初始化搭建+代码规范集成组件库多产物编译及文档编写上篇文章我们将组件库的基本结构和规范进行了整理,本篇的核心基本全在components文件夹下本篇的打包参考了文章https://github.com/worldzhao/blog/issues/5,强烈建议阅读一下此文章,而且讨论区也能......
  • 从零到一构建并打包 React + TypeScript + Less组件库教程(一、项目初始化搭建+代码规
    本系列涉及的内容如下:组件库基础搭建,react+ts+less项目规范,包括但不限于prettier、eslint、stylelint、husky、lint-staged、commitlintpnpmmonorepo+turborepo集成gulp+webpack构建esm、cjs和umdstorybook文档集成此系列不包含发布npm和构建CI流程。......
  • Node.js v22.6.0新特性:支持 TypeScript 直接运行!
    Node.jsv22.6.0版本已经发布,并且带来了一个开发者们期待已久的新特性——直接运行TypeScript(TS)文件的能力!版本更新亮点Node.jsv22.6.0版本通过--experimental-strip-types标志,实现了对TypeScript的实验性支持。这意味着开发者们现在可以在Node.js环境中直接执行......