You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:20:21