如何使用内联 JSDoc 指示参数是可选的?
根据 @param 的 JSDoc wiki,您可以使用 @param 来指示 @param 是可选的
/**
@param {String} [name]
*/
function getPerson(name) {
}
,并且您可以指示参数 内联 使用
function getPerson(/**String*/ name) {
}
我可以将它们组合起来,如下所示,效果很好。
/**
@param [name]
*/
function getPerson(/**String*/name) {
}
但我想知道是否有一种方法可以在可能的情况下内联完成这一切。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
来自官方文档:
可选参数
From official documentation:
Optional parameter
经过一番挖掘后,我发现这些也还可以,
只是比
function test(/**String=*/arg) {}
在视觉上更具吸引力After some digging up I found these are ok as well
Just slightly more visually appealing than
function test(/**String=*/arg) {}
我找到了一种使用 Google Closure Compiler 类型表达式。您可以在类型后面添加等号,如下所示:
函数测试(/**String=*/arg) {}
I found a way to do this using Google Closure Compiler type expressions. You put an equals sign after the type like so:
function test(/**String=*/arg) {}
如果您在函数参数上使用内联类型注释,并且想知道如何在该表示法中将函数参数标记为可选,我发现只需为可选参数分配默认值就可以了。如果您希望默认值是
未定义
,您也必须显式设置它,否则参数将不会被标记为可选(即使它前面已经是可选参数):如果您将鼠标悬停在在 IDE 中的
demo
中,您应该会看到optional1
和optional2
现在都显示为可选。在 VSCode 中,由参数名称后面的?
指示(TypeScript 表示法)。如果你从optional2
中删除= undefined
你会看到只有optional1
是可选的,这当然是无意义的,所以这里的默认值必须是明确的,就像我一样上一段提到的。In case you are using inline type comments on function arguments and are wondering how to mark a function argument as optional in that notation, I found that just assigning default values to the optional arguments worked. If you want the default to be
undefined
you have to set it explicitly as well though, otherwise the argument won't be marked as optional (even if it preceded by already optional arguments):If you hover over
demo
in your IDE you should see bothoptional1
andoptional2
showing up as optional now. In VSCode that is indicated by?
after the argument name (TypeScript notation). If you remove= undefined
fromoptional2
you will see onlyoptional1
being optional which is of course nonsense so the default value here must be explicit like I alluded to in the above paragraph.最完整的答案将来自 官方打字稿文档。
The most complete answer will be from the official typescript documentation.
使用 TypeScript 对 JSDoc 的处理,这是不可能的: https://github.com/microsoft/TypeScript /issues/47653
虽然您可以将参数标记为
@type { ... | undefined }
,它的可选性不会改变,因为所有参数都是可选的。因此,对于 TS,您必须使用外部
@param
注释块。With TypeScript's handling of JSDoc, this is not possible: https://github.com/microsoft/TypeScript/issues/47653
While you can mark a param as
@type { ... | undefined }
, its optionality does not change, because all parameters are optional.So with TS, you'll have to go with external
@param
comment blocks.