【发布时间】:2021-11-15 11:14:29
【问题描述】:
我在 JavaScript 文件中遇到了一些 ESLint 报告的奇怪问题。我添加了一些 JSDoc 定义,如下所示:
/**
* @typedef {Object} CustomRefA
* @property {string} attr1
* @property {string} attr2
* @property {Boolean} attr3
* @property {number} attr4
*/
/**
* @typedef {Object} CustomRefB
* @property {string} attr5
* @property {string} attr6
* @property {Boolean} attr7
* @property {CustomRefA} attr8
*/
这些定义也用于声明函数的返回值,如下所示:
/**
*
* @param {Object} params
* @param {string} params.attrA
* @param {string} params.attrB
* @returns {CustomRefA}
*/
function doesSomeActionA(options) {
return { };
}
/**
*
* @param {Object} params
* @param {string} params.attrA
* @param {CustomRefA} params.attrB
* @returns {Object}
*/
function doesSomeActionB(params) {
return { };
}
不过,我不太明白为什么当引用 CustomRefA 时,ESLint 会报告:
未解析的变量或类型“CustomRefA”
这也导致对分配有自定义类型的任何对象的属性的引用也被报告为未解析。这似乎并不总是发生,而且我找不到任何信息来表明可以解释该问题的项目之间的任何差异。
作为参考,这是在 WebStorm 2021.2 中,似乎是 ESLint 版本 7.32.0(根据 Node/NPM)。我对此进行了大量搜索,但未能找到足够适用于这种情况的结果。
【问题讨论】:
-
在 2021.2.2 版本的 WebStorm 中对您的工作方式是否相同?
-
使用类似代码对我来说很好。请检查使缓存失效是否有帮助:转到 文件 | Invalidate Caches... 在主菜单中点击Invalidate and Restart
-
@s0xzwasd 所有设法做的就是以某种方式关闭文件的 linting。我以前也遇到过这种情况,需要删除文件,删除 .idea 文件夹,重新打开项目,然后重新创建文件。
-
@lena 是的,由于各种原因,我已经这样做了几次,但从未解决过这个特定问题。
标签: javascript webstorm eslint jsdoc