javascript - 如何使用 JSDoc 记录返回具有公共方法的对象的工厂函数?
问题描述
我有以下工厂功能:
/**
* Create a CRUD interface
* @param {string} collectionName Name of the table/collection on the API side
* @return {Object}
*/
export default function createCrudInterface(collectionName) {
return {
/**
* Create a new item
* @param {Object} data JSON request data
* @param {import('./api-call').ApiOptions} [apiOptions] API call options
* @return {Promise}
*/
create(data, apiOptions) {
return apiCall('POST', `/${collectionName}`, null, data, apiOptions);
},
/**
* Gets one or more items
* @param {(string|number)} [id] ID of item
* @param {Object} [queryParams] Query parameters
* @param {import('./api-call').ApiOptions} [apiOptions] API call options
* @return {Promise}
*/
get(id, queryParams, apiOptions) {
return apiCall(
'GET',
`/${collectionName}` + (id && `/${id}`),
queryParams,
null,
apiOptions
);
},
/**
* Update an item
* @param {(string|number)} id ID of item
* @param {Object} data JSON request data
* @param {import('./api-call').ApiOptions} [apiOptions] API call options
* @return {Promise}
*/
update(id, data, apiOptions) {
return apiCall('PUT', `/${collectionName}/${id}`, null, data, apiOptions);
},
/**
* Delete one or more items
* @param {(string|number|string[]|number[])} idOrIds ID of item
* @param {import('./api-call').ApiOptions} [apiOptions] API call options
*/
delete(idOrIds, apiOptions) {
const batch = Array.isArray(idOrIds);
return apiCall(
'DELETE',
`/${collectionName}` + (batch ? '' : `/${idOrIds}`),
null,
batch ? { ids: idOrIds } : null,
apiOptions
);
},
};
}
这似乎会起作用,但它不会:
const blah = createCrudInterface('blah');
当我输入blah.create(
时,VS Code IntelliSense 不知道该建议什么。它不是拉我定义的方法 JSDoc。
这样做的正确方法是什么?
解决方案
推荐阅读
- php - 当我上传图像并调整大小时,来自服务器的 500 问题
- c# - StubbleOrg(mustache) 配置日期格式
- r - 尝试将列表存储在长度为 1 的 data.table 中时出错
- c - 在 C 中的一行中用随机字节填充多维数组
- python - 如何启用 Windows 的 scp 以在 Python 中使用?
- c - 我的链接列表中的作业不起作用
- php - PHP 中 DATETIME 字段 MS-SQL 的问题
- javascript - 如何使用面向对象的 javascript 调用谷歌地图 API?
- mysql - 如何在触发器中设置和使用变量?
- tensorflow - 如何在tensorflow中重新安装gpu