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();