如何为JSDoc标注的CheckData类定义可选属性
如何为JSDoc标注的CheckData类定义可选属性
嘿,我懂你的需求——你想给用JSDoc标注的CheckData类加上可选的data属性,同时能像之前用@typedef那样,顺利用/**@type{CheckData}**/标注你的对象实例对吧?
其实操作起来和你用@typedef的思路差不多,JSDoc里不管是定义对象类型还是类的属性,标记可选属性的语法是通用的:只需要在属性的类型后面加一个=就搞定了。
你之前的@class标注已经有了check属性,只需要把data属性的类型改成*=,就能把它标记为可选。完整的标注应该是这样的:
/** * @class CheckData * @property {boolean} check - Indicates if the operation was successful * @property {*=} data - Optional additional data (the = symbol marks this property as optional) */
改完之后,你原来的两个对象标注就都能被正确识别了:
/**@type{CheckData}**/ const object1 = {check:true} /**@type{CheckData}**/ const object2 = {check:false, data: 'Why?'}
不管是只传check的object1,还是同时传了check和data的object2,JSDoc都会认可它们符合CheckData的类型定义。
对了,顺便提一句,这个=标记可选属性的语法在JSDoc里是通用的,不管你是用@typedef定义纯对象类型,还是用@class标注类结构,都能这么用哦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

