根据@param的JSDoc wiki,您可以使用
指示@param是可选的/**
@param {String} [name]
*/
function getPerson(name) {
}
您可以使用
指示参数inlinefunction getPerson(/**String*/ name) {
}
我可以将它们组合起来,如下所示,这样就可以了。
/**
@param [name]
*/
function getPerson(/**String*/name) {
}
但我想知道是否有办法在可能的情况下全部内联。
答案 0 :(得分:78)
名为foo的可选参数。
@param {number} [foo]
// or:
@param {number=} foo
可选参数foo,默认值为1。
@param {number} [foo=1]
答案 1 :(得分:56)
经过一番挖掘,我发现这些也没关系
/**
* @param {MyClass|undefined}
* @param {MyClass=}
* @param {String} [accessLevel="author"] The user accessLevel is optional.
* @param {String} [accessLevel] The user accessLevel is optional.
*/
比function test(/**String=*/arg) {}
答案 2 :(得分:45)
我找到了使用Google Closure Compiler type expressions执行此操作的方法。你在类型之后放了一个等号:
function test(/**String=*/arg) {}
答案 3 :(得分:0)
如果您在函数参数上使用内联类型注释,并且想知道如何在该表示法中将函数参数标记为可选,我发现只需将默认值分配给可选参数即可。如果您想将默认值设置为undefined
,则也必须显式设置它,否则该参数将不会被标记为可选(即使它前面已经有可选参数):
function demo(
/** @type {String} */ mandatory,
/** @type {Number} */ optional1 = 0,
/** @type {Number} optional2 = undefined,
)
如果在IDE中将鼠标悬停在demo
上,您现在应该看到optional1
和optional2
都显示为可选。在参数名称(TypeScript表示法)后由?
表示的VSCode中。如果从= undefined
中删除optional2
,您将只会看到optional1
是可选的,这当然是胡说八道,因此这里的默认值必须像我在上一段中提到的那样是明确的。