gpt4 book ai didi

javascript - JsDoc 和 WebStorm : Refer to exports

转载 作者:行者123 更新时间:2023-11-30 15:41:59 26 4
gpt4 key购买 nike

我有一个这样的模块:

/**
* Do something with target. A bunch of these methods
* @param target
*/
function doJob(target) {
target.something = 'value';
}

module.exports = {
doJob
};

WebStorm 正确识别出 doJob 由该模块导出,并提供良好的智能感知。

现在我想添加工具以便我可以将所有导出的方法与目标绑定(bind)。

module.exports = {
doJob
};

const oldExports = Object.assign({}, module.exports);
module.exports.bind = function (target) {
const newExports = {};
for (var key in oldExports) {
newExports[key] = oldExports[key].bind(null, target);
}
return newExports;
};

这个想法是,消费者可以获得正常的导出并以过程方式使用函数,或者他们可以获得相同的一组函数,绑定(bind)到他们的本地 target

我现在的问题是,如何告诉 WebStorm(使用 JsDoc)bind() 函数的返回值与 module.exports 相同?

我尝试过的事情:

  • @returns {module.exports}
  • @returns {exports}
  • 在顶部声明@module,然后@returns那个符号
  • @alias - 不幸的是,这似乎完全接管了符号,所以现在我在 module.exports
  • 中不再有任何东西

我意识到这不是世界末日。但我觉得我非常接近将所有东西组合在一起,这让我发疯。

知道在 JsDoc 中执行此操作的正确方法是什么吗?WebStorm/PhpStorm 知道如何使用它的额外好处是什么?

最佳答案

好的,我想我明白了。

function doJob(target) {
target.something = 'value';
}

class JobsModule {
constructor() {
Object.assign(this, /** @lends {JobsModule.prototype} */ {
doJob,
// other exports go here
});
}
}

module.exports = new JobsModule();

/**
* @return {JobsModule}
*/
module.exports.bind = function (target) {
const newExports = {};
for (var key in new JobsModule()) {
newExports[key] = oldExports[key].bind(null, target);
}
return newExports;
};

将所有内容声明为一个类,然后在需要时创建它即可。效率不高,但可能没什么大不了的。

关于javascript - JsDoc 和 WebStorm : Refer to exports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40650842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com