只能从枚举数组中获取值的JSDoc文档参数

问题描述

我已经检查了本网站上是否有可能解决我的问题的答案,但都没有涵盖我的情况。

我有一个更改颜色并带有color参数的函数。该功能仅适用于COLORS枚举中包含的值。

/**
 * @enum ???
 * or
 * @typedef ???
 */
const COLORS = ['green','yellow','red','none',null];

/**
 * @param {???} color color value from COLORS array
 */
function changeColor(color) {
  if (!COLORS.includes(color)) return;
  // ...
}

我如何正确记录a)枚举COLORS和b)JSDoc中的函数参数color

编辑:看来我对enum的理解是错误的。从外观上看,文字数组不能视为enum。因此,如果我要坚持当前的实现方式,我还要如何明确指出color只能是COLORS中的值?

解决方法

基于@constanttypedef的JSDoc文档,对于constant,您可以执行以下示例:

/** @constant
    @typedef {Array} COLORS
    @type {Array<?string>}
    @default
*/

const COLORS = ['green','yellow','red','none',null];

PS:请注意,?用于声明Array值可以为字符串或null。有关更多信息,请查看@type文档中的Nullable类型。

对于Function

/**
 * @param {?string} color - The color used,one of {@link COLORS}.
 */
function changeColor(color) {
  if (!COLORS.includes(color)) return;
  // ...
}