首页 > 解决方案 > 如何使用 JSDOC 从对象的值创建联合

问题描述

我有一个字符串枚举定义如下:

//Note how the keys and the values are different. 
const myStringEnum = {
value: "value1",
anotherValue: "value2",
yetAnotherValue: "value3",
}

我有一个带有 2 个参数的函数。第一个参数必须是myStringEnum枚举中的一个值。

例子:

function foo(param1, param2){

  switch(param1){
   case "value1" : 
      //logic
    break;
   //etc
  }
}

我想通过 JSDoc 记录 param1 将是这样的联合:("value1"|"value2"|"value3")

我知道我可以直接在 JSDOC 中执行此操作,但是我想知道是否可以以编程方式执行此操作,因此如果我修改枚举,JSDOC 将自动填充联合。

我知道如果枚举中的值和键相同,例如:

const anotherEnum ={ 
value1: "value1",
value2: "value2",
}

然后我可以简单地使用keyof运算符:

/**
*
* @param {keyof anotherEnum} param1
*/

但是,不幸的是,对于我正在处理的代码,键/值对必须不同。

我可以通过 JSDOC 做些什么来让我("value1"|"value2"|"value3")myStringEnum. 可能像:

/**
*
* @param {myStringEnum[keyof myStringEnum} param1
*/

PS我已经尝试过了,它推断出类型string而不是实际值。

标签: javascriptjsdoc

解决方案


推荐阅读