首页 > 解决方案 > 使用jsdoc生成打字稿时找不到命名空间

问题描述

我有一个大型的旧 javascript 库,它用 jsdoc 进行了彻底的注释,并生成了看起来不错的 API 文档。我想使用 typescript 编译器来制作基于此的 typescript 模板文件。但是,由于我们记录类的方式而tsc失败(代码的核心早于 ES6,因此它不使用关键字)。下面给出一个简单的复制示例:error TS2503class

文件src/index.js

/**
 * @namespace sample
 */

module.exports = {
  aclass: require('./aclass')
};

文件src/aclass.js

/**
 * @class
 * @alias sample.aclass
 * @returns {sample.aclass} A instance of the aclass.
 */
var aclass = function () {
  if (!(this instanceof aclass)) {
    return new aclass();
  }
};

module.exports = {
  aclass: aclass
};

文件tsconfig.json

{
  "include": ["src/index.js"],
  "compilerOptions": {
    "allowJs": true,
    "checkJs": true,
    "declaration": true,
    "outDir": "dist/ts",
    "target": "es6",
    "module": "CommonJS",
    "lib": ["es6", "dom"],
    "noEmit": true,
    "strict": false,
    "noImplicitThis": true,
    "alwaysStrict": true,
    "esModuleInterop": true
  }
}

运行时tsc,具体输出

src/aclass.js:4:14 - error TS2503: Cannot find namespace 'sample'.

4  * @returns {sample.aclass} A instance of the aclass.

理想情况下,我仍然想生成好的 jsdocs 并生成 typescript 模板文件。如何重构 jsdocs 或更改 tsconfig 以使其工作?

标签: typescriptjsdoc

解决方案


推荐阅读