使用tsd-jsdoc处理高阶函数JSDoc生成类型错误如何解决?
问题原因
你当前使用的tsd-jsdoc工具原生不支持解析@returns注释中直接声明的嵌套函数参数、返回值类型,会默认将返回的函数推导为无类型约束的(...params: any[]) => any,这是工具本身的实现缺陷,和你的npm命令配置无关。
解决方案
你可以选择以下任意一种方式解决:
调整JSDoc写法适配
tsd-jsdoc
先通过@callback预定义返回的函数类型,再在@returns中引用该类型,示例写法如下:/** * @callback AddReturn * @param {number} b * @returns {number} */ /** * @param {number} a * @returns {AddReturn} */ const add = a => b => a + b;重新生成后即可得到你期望的类型定义结果。
更换生成工具为TypeScript原生能力
TypeScript本身对JSDoc的兼容性更好,无需修改原有注释写法即可生成正确的类型,操作步骤如下:- 在项目根目录新增
tsconfig.json,配置如下:{ "compilerOptions": { "allowJs": true, "declaration": true, "emitDeclarationOnly": true, "outDir": "./dist", "rootDir": "./src" }, "include": ["src/**/*"] } - 将npm脚本修改为
"build-types": "tsc",重新执行即可生成正确的类型定义。
- 在项目根目录新增
内容的提问来源于stack exchange,提问作者Ragnar
相关产品推荐
相关产品推荐

