到目前为止,有4种不同的方式将对象记录为参数/类型。每个都有自己的用途。但是,其中只有3个可用于记录返回值。
对于具有一组已知属性的对象(变量A)
/**
* @param {{a: number, b: string, c}} myObj description
*/
对于仅用作此函数参数且不需要进一步描述每个属性的对象,此语法是理想的。它可用于@returns
和。
对于具有一组已知属性的对象(变体B)
具有属性语法的参数非常有用:
/**
* @param {Object} myObj description
* @param {number} myObj.a description
* @param {string} myObj.b description
* @param {} myObj.c description
*/
对于仅用作该函数参数且需要进一步描述每个属性的对象,此语法非常理想。不能用于@returns
。
对于将在源中多个点使用的对象
在这种情况下,@typedef非常方便。你可以在你的代码的一个点定义的类型和使用它作为一个类型@param
或@returns
或其他JSDoc标签,可以让使用的类型。
/**
* @typedef {Object} Person
* @property {string} name how the person is called
* @property {number} age how many years the person lived
*/
然后,您可以在@param
标签中使用它:
/**
* @param {Person} p - Description of p
*/
或在@returns
:
/**
* @returns {Person} Description
*/
对于其值均相同类型的对象
/**
* @param {Object.<string, number>} dict
*/
第一种类型(字符串)记录了键的类型,这些键的类型在JavaScript中始终为字符串,或者至少始终会强制为字符串。第二种类型(数字)是值的类型;这可以是任何类型。此语法也可以用于@returns
。
资源资源
有关文档类型的有用信息,可以在这里找到:
https://jsdoc.app/tags-type.html
PS:
要记录可选值,可以使用[]
:
/**
* @param {number} [opt_number] this number is optional
*/
要么:
/**
* @param {number|undefined} opt_number this number is optional
*/