JSDoc中使用"event"作为对象键出现语法错误的原因及解决办法
ESLint JSDoc插件为何禁止用"event"作为内联对象键?
问题重现
当我在JSDoc中使用以下内联对象类型定义时,ESLint的jsdoc/valid-types规则抛出了语法错误:
@property {{event: Object.<string, MyEnum[]>, observation: Object.<string, MyEnum[]>}} enums
错误提示:
Syntax error in type: (...) jsdoc/valid-types
但只要把对象键名从event改成events,错误就自动消失了。
原因分析
这是因为event是JSDoc类型解析器中的特殊标识符,在这种内联对象的语法场景下,会被误识别为其他语法结构(比如和JSDoc中与事件相关的特殊语法逻辑冲突),导致类型解析失败。JSDoc的类型系统在处理内联对象定义时,对部分和内置语法逻辑冲突的标识符存在解析兼容性问题,event就属于这类标识符。
已验证的解决方法
通过拆分@property定义的方式可以规避这个问题,不需要修改键名就能正常通过校验,修改后的代码如下:
@property {Object} enums @property {Object.<string, MyEnum[]>} enums.event @property {Object.<string, MyEnum[]>} enums.observation
内容的提问来源于stack exchange,提问作者Aghyul Kyoku
相关产品推荐
相关产品推荐

