问题描述
我已经检查了本网站上是否有可能解决我的问题的答案,但都没有涵盖我的情况。
我有一个更改颜色并带有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
中的值?
解决方法
基于@constant,typedef的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;
// ...
}