如何在JSDoc中推导Zod类型(不使用TypeScript)
在JavaScript中通过JSDoc复用Zod Schema的推断类型
你可以通过JSDoc结合Zod的infer类型工具实现需求,无需手动编写重复的类型结构,具体有两种实用写法:
方法一:提前定义类型别名(推荐,便于复用)
先定义Zod Schema,再通过JSDoc创建可复用的类型别名:
import { z } from "zod"; // 定义Zod Schema const personSchema = z.object({ name: z.string(), id: z.number() }); // 基于Schema推断类型并定义别名 /** @typedef {import('zod').z.infer<typeof personSchema>} Person */
之后在函数中直接使用该别名标注参数:
/** * 处理用户信息 * @param {Person} person - 用户对象 */ function handlePerson(person) { console.log(person.name); // VSCode会自动补全name、id,且做类型检查 console.log(person.id); }
方法二:直接在JSDoc中使用推断表达式
如果不需要复用类型,可直接在@param中写入推断语句:
import { z } from "zod"; const personSchema = z.object({ name: z.string(), id: z.number() }); /** * 处理用户信息 * @param {import('zod').z.infer<typeof personSchema>} person - 用户对象 */ function handlePerson(person) { // 同样能获得自动补全和类型检查 }
注意事项
- 确保VSCode启用JavaScript类型检查:在设置中开启
"javascript.implicitProjectConfig.checkJs": true - 无需安装TypeScript,纯JavaScript环境下依赖Zod自带的类型声明文件即可生效
内容的提问来源于stack exchange,提问作者bristweb
相关产品推荐
相关产品推荐

