stu*_*eek 107 javascript google-closure-compiler jsdoc
根据@param的JSDoc wiki,您可以指示@param是可选的
/**
@param {String} [name]
*/
function getPerson(name) {
}
Run Code Online (Sandbox Code Playgroud)
并且您可以指示内联使用的参数
function getPerson(/**String*/ name) {
}
Run Code Online (Sandbox Code Playgroud)
我可以将它们组合起来,如下所示,它可以正常工作.
/**
@param [name]
*/
function getPerson(/**String*/name) {
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有办法在可能的情况下全部内联.
cze*_*rny 111
从官方文件:
一个名为foo的可选参数.
@param {number} [foo]
// or:
@param {number=} foo
Run Code Online (Sandbox Code Playgroud)
可选参数foo,默认值为1.
@param {number} [foo=1]
Run Code Online (Sandbox Code Playgroud)
vvM*_*Ovv 61
经过一番挖掘后,我发现这些也没问题
/**
* @param {MyClass|undefined}
* @param {MyClass=}
* @param {String} [accessLevel="author"] The user accessLevel is optional.
* @param {String} [accessLevel] The user accessLevel is optional.
*/
Run Code Online (Sandbox Code Playgroud)
只是略微视觉上吸引力 function test(/**String=*/arg) {}
如果您对函数参数使用内联类型注释,并且想知道如何在该表示法中将函数参数标记为可选,我发现只需为可选参数分配默认值即可。如果你想要默认值,undefined你也必须明确设置它,否则参数不会被标记为可选(即使它前面已经是可选参数):
function demo(
/** @type {String} */ mandatory,
/** @type {Number} */ optional1 = 0,
/** @type {Number} optional2 = undefined,
)
Run Code Online (Sandbox Code Playgroud)
如果您将鼠标悬停demo在您的 IDE 中,您现在应该看到两者optional1并optional2显示为可选。在 VSCode 中,由?参数名称(TypeScript 表示法)后表示。如果你= undefined从中删除,optional2你只会看到optional1可选的,这当然是无稽之谈,所以这里的默认值必须是明确的,就像我在上一段中提到的那样。