VSCode无法正确识别Rest parameters的JSDoc类型标注该如何解决?
问题原因
你当前使用的JSDoc标注语法不被VSCode内置的类型解析逻辑支持,分开声明@param {string} elementList[].type的写法无法被识别,因此类型会降级为any[]。
正确写法
方案1:直接在参数处声明结构
如果你不需要复用这个对象类型,可以直接在@param行定义剩余参数的结构:
/** * @param {...{type: string}} elementList */ function add(...elementList) { // 此时elementList会被正确识别为 {type: string}[] 类型 elementList.map(e => e) }
方案2:先定义类型再引用
如果该对象结构需要在多处使用,可以先通过@typedef定义自定义类型再引用:
/** * @typedef {Object} Element * @property {string} type */ /** * @param {...Element} elementList */ function add(...elementList) { elementList.map(e => e) }
可选增强配置
如果想要更强的类型校验能力,可以在JS文件顶部添加// @ts-check注释,或是在项目根目录的jsconfig.json中配置"checkJs": true,强制VSCode开启JavaScript类型检查,类型提示的准确性会更高。
内容的提问来源于stack exchange,提问作者user15163984
相关产品推荐
相关产品推荐

