提问人:rickydickydodahgrimes 提问时间:11/2/2023 最后编辑:mplungjanrickydickydodahgrimes 更新时间:11/2/2023 访问量:78
如何使用 JSDoc 注释记录具有属性和方法的 JavaScript 对象
How to document a JavaScript object with properties and methods with parameters using JSDoc comments
问:
const objectname = {
property: 0,
set (value) {
this.property = value;
}
}
您将如何使用 JSDoc 注释来记录这些示例行?
这是我已经尝试过的,但它没有显示为方法,也没有显示其参数。objectName.set
/**
* Represents an object with a property and a set method.
* @typedef {object} ObjectName
* @property {number} property - The numeric property of the object.
* @property {Function} set - Sets the property value to the specified value.
* @param {number} value - The value to set the property to.
* @returns {void}
*/
/**
* An instance of ObjectName.
* @type {ObjectName}
*/
const objectName = {
property: 0,
/**
* Sets the property value to the specified value.
* @param {number} value - The value to set the property to.
* @returns {void}
*/
set(value) {
this.property = value;
}
};
答:
1赞
T.J. Crowder
11/2/2023
#1
我不是 JSDoc 专家,也许我太简单了,但这似乎有效:
/**
* An object that blah blah blah...
*/
const objectname = {
/**
* The numeric property of the object.
* @type number
*/
property: 0,
/**
* Sets the `property` to the given value.
* @param {number} value - The value to set the property to.
* @returns {void}
*/
set(value) {
this.property = value;
},
};
当我在 VS Code 中使用它时,我会在弹出窗口等中获取事物的类型和描述(包括参数类型 on)。set
评论
1赞
Jared Smith
11/2/2023
这是正确的方法。它丑陋而冗长,我讨厌它,但事实就是如此。它还可用于注释 TS 接口和对象类型。
0赞
rickydickydodahgrimes
11/2/2023
是的,它看起来并不令人愉悦,但它有效,你会得到一个正确的弹出窗口,这就是我想要的
0赞
rickydickydodahgrimes
11/2/2023
@JaredSmith你说它很啰嗦是什么意思,对不起,我只是不明白
0赞
Jared Smith
11/2/2023
@rickydickydodahgrimes冗长==冗长,你最终会得到比实际代码更多的注释行。但是,是的,它会在这里做你想做的事。
1赞
rickydickydodahgrimes
11/2/2023
@JaredSmith啊,我知道我一直在努力避免这种情况,但似乎没有任何其他方法可以记录可以按预期工作的对象
0赞
mplungjan
11/2/2023
#2
@param 和 @returns 标记属于 set 方法的 JSDoc 注释中,而不是 ObjectName 的 @typedef 注释中。
VSCode 如果我删除,则有效
/**
* An instance of ObjectName.
* @type {ObjectName}
*/
这是更正后的版本
/**
* Represents an object with a property and a set method.
* @typedef {object} ObjectName
* @property {number} property - The numeric property of the object.
* @property {Function} set - Sets the property value to the specified value.
*/
const objectName = {
property: 0,
/**
* Sets the property value to the specified value.
* @param {number} value - The value to set the property to.
* @returns {void}
*/
set(value) {
this.property = value;
}
};
VSCode:
评论
1赞
rajniszp
11/2/2023
ObjectName
指类型,是变量名称。我在这里看不出任何问题。在@param和@returns部分,你是对的objectName
1赞
rickydickydodahgrimes
11/2/2023
工作方式有点像我想要的,但是当使用 set 方法时,它不会显示正确的参数,我使用 VSCode 顺便说一句,只是问题的屏幕截图 imgur.com/a/IWNc17x
0赞
rickydickydodahgrimes
11/2/2023
@mplungjan 使用函数时显示参数的弹出窗口显示正确,但不适用于对象内部的方法。我也在不同的物体上尝试过,这是同样的问题。也许 VSCode 以不同的方式解释 jsDoc?
0赞
rickydickydodahgrimes
11/2/2023
是的,它适用于班级。您是否认为将我的 JavaScript 对象作为类而不是简单的对象声明会更好,即使该对象将被构造一次。对不起问了这么多问题哈哈。
0赞
mplungjan
11/2/2023
这完全取决于您的需求。我看到很多关于 jsdoc 和方法的问题。例如,请看这里 stackoverflow.com/questions/19230971/...
评论