首页 > 解决方案 > 如何在 JSDoc 中为数组添加属性?

问题描述

我有一个Series对象数组。

它是一个规则的对象数组,通过与此类似的代码添加了一个函数:

let series = loadSeriesFromDatabase();
series.getByName = (name)=>{return series;}

我现在尝试以多种方式将此函数(getByName)添加到 SeriesList。我最接近的是将系列记录为{Object}并像这样添加它:

/**
 * @callback GetByNameFn
 * @param {string} name Name of the series
 * @returns {Series} The series that matches given name
 */
/**
 * @typedef {Object} SeriesList
 * @property {GetByNameFn} getByName
 */
/**
 * @type {SeriesList}
 */
let series = [];

但这留下 series 不是作为 anSeries[]而是作为 an Object,这不是我想要的......

上面的代码识别getByName为函数,但如果我将其更改为@typedef {Series[]} SeriesList它停止工作......

有没有办法让它与数组一起工作,或者我只是做错了?

标签: javascriptjsdoc

解决方案


我采用了您最初的尝试并修改了 JSDocs 以获得我认为您正在寻找的结果。

具有功能的系列列表的能力也存在。

/**
 * @callback GetByNameFn
 * @param {string} name Name of the series
 * @returns {Series} The series that matches given name
 */
/**
 * @typedef {Object} SeriesFunctions
 * @property {GetByNameFn} getByName
 */
/**
 * @typedef {object} Series
 * @property {string} name
 * @property {int} year
 */
/**
 * @type {Series[]&SeriesFunctions}
 */
let series = [];

// Usage
series.getByName();

// Other Usage for the autocomplete fields.
series[0].name

推荐阅读