Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSDoc:getter/setter函数属性的@param和@type组合(可选)_Javascript_Documentation_Jsdoc_Docblocks - Fatal编程技术网

Javascript JSDoc:getter/setter函数属性的@param和@type组合(可选)

Javascript JSDoc:getter/setter函数属性的@param和@type组合(可选),javascript,documentation,jsdoc,docblocks,Javascript,Documentation,Jsdoc,Docblocks,如何使用@param提示作为属性的函数的可选参数(this.selectedPage()),以及如何使用@type提示其返回类型 以此为例(this.selectedPage()可以通过传递参数接收页面,通过不传递参数返回页面): IDE很好地提取了类型提示,并允许自动完成this.selectedPage()生成页面的事实 但是,请注意,this.selectedPage()接受一个参数,即页面。否则IDE会抱怨函数在试图传递一个参数时允许0个参数 所以我把两者结合起来: /** * @ty

如何使用
@param
提示作为属性的
函数的可选参数(
this.selectedPage()
),以及如何使用
@type
提示其返回类型

以此为例(
this.selectedPage()
可以通过传递参数接收页面,通过不传递参数返回页面):

IDE很好地提取了类型提示,并允许自动完成
this.selectedPage()
生成
页面的事实

但是,请注意,
this.selectedPage()
接受一个参数,即页面。否则IDE会抱怨函数在试图传递一个参数时允许0个参数

所以我把两者结合起来:

/**
 * @type {function(Page): Page}
 */
this.selectedPage = ko.observable(data.page);
这似乎可以阻止IDE在试图传递参数时抱怨,但现在它在未传递参数时抱怨

我尝试了
@type{function(未定义的| Page):Page}
但没有成功


该函数是一个getter/setter函数-那么如何才能告诉docblock@param是可选的呢?

对,在阅读了各种网站上的JSDoc规范之后,我现在发现了Google的闭包编译器语法,它实现了我一直在尝试的功能-IntelliJ/PHPStorm也正确地使用了该语法

基本上,可选参数的后缀可以是
=

/**
 * @type {function(Page=): Page}
 */
this.selectedPage = ko.observable(data.page);
或者更复杂的例子:

/**
 * @type {function(Array.<Page>=): Array.<Page>}
 */
this.pages = ko.observableArray();
/**
*@type{function(Array.=):Array.}
*/
this.pages=ko.observearray();
这正是我想要它做的:文档生成器和IDE识别出
This.selectedPage()
的返回值以及
This.pages()
发出的任何项实际上都属于
Page
类型,它们本身的所有属性都被识别(因为
页面
类型也是这样记录的)


类似地,我认为,这个符号也应该正确地记录可以作为参数传递的(可选)类型。

有没有理由不将
@returns
用于返回类型?因为它是一个属性,所以不起作用。例如@return在function(){}上起作用,但在this.func=func()上不起作用除非它应该而且是IDE的问题。
/**
 * @type {function(Array.<Page>=): Array.<Page>}
 */
this.pages = ko.observableArray();