javascript - 如何使用 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
而不是实际值。
解决方案
推荐阅读
- c - 如何用 char 初始化矩阵。我正在尝试做公鸡游戏,一开始我需要一个带有“-”的矩阵 3x3
- html - 子菜单在手机上打不开
- python - sympy 函数中的隐式微分
- android - getHeight() 在第一次运行时没有返回正确的值-使用 ViewTreeObserver-
- node.js - 如何根据用户输入告诉 Alexa 从 LaunchRequest 跳转到特定意图
- vue.js - 如何检查我的 create-nuxt-app 版本并进行升级?
- python - 从字典中获取所有具有列表值的组合(来自嵌套字典列表的笛卡尔积)
- java - 在 Ubuntu 14.04 上从 Java 创建 Chrome 驱动程序失败:java.lang.IllegalStateException:驱动程序可执行文件不存在:
- python - 将类的实例分配给更大类的属性以创建嵌套点表示法
- python - setuptools pip wheel 失败,错误代码为 2