我需要帮助使用 JSDoc3 键入具有通用键的不可变对象(immutable对象),因为 WebStorm 总是提示。 也许我错了,请告诉我。
基本上,用通用键键入一个对象可以写成如下
/** @typedef {Object<string,number>} myObject */
我的对象是不可变的,所以我创建了更多 JSDoc 来涵盖一些不可变函数:
/**
* @typedef {Object} ImmutableObject
* @property {function} set
* @property {function} setIn
*/
我的键也在一个枚举中,所以更多的 JSDoc
/**
* @enum
*/
const SOME_KEYS= {KEY1: 'key1', KEY2:'key2'}
然后我把它们放在一起:
/** @typedef {ImmutableObject<SOME_KEYS,number>} myImmutableObject */
尽管我尽了一切努力,当我使用在对象类型上用 myImmutableObject
声明的不可变函数时,WebStorm 总是提示该函数不存在!
这是 WebStorm 2020 的屏幕截图(2019 年相同):
但是,ImutableObject
类型在“单独”使用时效果很好,这是从 WebStorm 2020 截取的屏幕截图:
最佳答案
目前不支持扩展typedef,请关注WEB-34403和更新的链接票
关于javascript - 使用 JSDoc3 键入一个使用通用键的不可变对象(immutable对象)在 WebStorm 中没有得到很好的识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61084513/