如何在JSDoc中为函数参数定义支持单值/数组的字符串枚举
解决JSDoc中同时支持单个枚举值与数组类型的问题
你可以通过先定义可重用的类型别名,再在参数类型中引用该别名并同时支持单个值和数组的方式实现,无需重复编写颜色值:
方法一:使用@typedef定义联合类型
/** * @typedef {'green' | 'yellow' | 'orange'} Color */ /** * @param {Color | Color[]} givenArg 单个合法颜色字符串或合法颜色字符串数组 */ function colorize(givenArg) { return givenArg }
说明
- 通过
@typedef定义Color类型,将允许的三个颜色值用联合类型一次性声明,实现代码复用 - 在
@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-
相关产品推荐
相关产品推荐

