VS Code中JSDocs调用函数初始化变量时忽略@returns的原因与解决办法
解决VS Code中JSDocs忽略变量@returns指令的问题
当你通过调用其他函数初始化变量时,直接给变量加@function和@returns不会覆盖VS Code的类型推断——这两个标签是用来标注函数自身定义的,而非变量的类型。要在不修改functionGetter的前提下修正这个问题,直接用@type标签给变量指定类型即可:
const functionGetter = () => () => { return false; }; /** @type {() => string} */ const fn = functionGetter();
原理说明
@type是JSDoc中直接指定变量类型的标签,优先级高于表达式的自动类型推断。这里() => string明确告诉VS Code:fn是一个无参数、返回值为string类型的函数。- 你之前用的
@function+@returns组合,VS Code会优先从functionGetter()的原始返回值(即() => boolean)来推断fn的类型,所以你的标注被忽略了。
这样修改后,VS Code就会按照你指定的类型识别fn,同时不会影响functionGetter本身的类型声明。
内容的提问来源于stack exchange,提问作者Barak Gall
相关产品推荐
相关产品推荐

