js-doc / google-closure-compiler 如何记录传递的枚举对象本身

js-doc / google-closure-compiler how to document passed enum object itself?

本文关键字:枚举 对象 记录 google-closure-compiler 何记录 js-doc      更新时间:2023-09-26

例如

/**
 * Super my enum
 * @enum {number}
 */
var MyEnum = {
    ONE: 1,
    TWO: 2
};
/**
 * @param {what type is it?} enumObj
 */
function showEnum(enumObj) {
  console.log(enumObj);
}
//show the enum definition object
showEnum(MyEnum);

如何将参数类型描述为不是MyEnum的值/实例,而是MyEnum对象本身?

使用!MyEnum,其中!表示"非空"。

/**
* @param {!MyEnum} enumObj
*/
function showEnum(enumObj) {
  console.log(enumObj);
}

我在WebStorm和VSCode中测试的自动完成解决方案是使用typeof MyEnum
它仍然无效的 JSDoc,但 IDE 支持自动完成。

/**
 * @param {typeof MyEnum} enumObj
 */
function showEnum(enumObj) {
  console.log(enumObj);
}