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

如何在JSDoc中为函数参数定义支持单值/数组的字符串枚举

解决JSDoc中同时支持单个枚举值与数组类型的问题

你可以通过先定义可重用的类型别名,再在参数类型中引用该别名并同时支持单个值和数组的方式实现,无需重复编写颜色值:

方法一:使用@typedef定义联合类型

/**
 * @typedef {'green' | 'yellow' | 'orange'} Color
 */

/**
 * @param {Color | Color[]} givenArg 单个合法颜色字符串或合法颜色字符串数组
 */
function colorize(givenArg) {
  return givenArg
}

说明

  1. 通过@typedef定义Color类型,将允许的三个颜色值用联合类型一次性声明,实现代码复用
  2. 在@param中使用Color | Color[],明确参数可以是单个Color类型的字符串,或者由Color类型字符串组成的数组,完全匹配需求

方法二:使用枚举对象(可选)

如果你希望将颜色值统一维护在枚举对象中,也可以用以下方式:

/**
 * @enum {string}
 */
const ColorEnum = {
  GREEN: 'green',
  YELLOW: 'yellow',
  ORANGE: 'orange'
}

/**
 * @param {typeof ColorEnum[keyof typeof ColorEnum] | Array<typeof ColorEnum[keyof typeof ColorEnum]>} givenArg
 */
function colorize(givenArg) {
  return givenArg
}

这种方式通过枚举对象维护颜色值,参数类型自动关联枚举的取值,后续修改颜色值只需更新枚举对象即可。

内容的提问来源于stack exchange,提问作者Islam Y-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:45:47