笑话无法识别我的自定义类型

时间:2018-12-19 14:33:20

标签: typescript webpack jestjs

我有一个打字稿项目,该项目需要一个个人库,该库要从作为commonjs lib构建的git repo添加到我的package.json中。当我运行构建脚本./node_modules/.bin/webpack -d --config webpack/webpack.dev.js时,所有内容均可正确编译。但是,当我开玩笑jest --config front/jest.config.js时,它会引发以下错误:

● Test suite failed to run
TypeError: dumblib_1.default is not a constructor

12 | const dumblib = new DumbLib(vars)

当进入lib的入口点时,该入口只是从es6编译为commonjs的节点项目,该捆绑包会在文件末尾显示此内容:

module.exports = DumbLib;

该库不是打字稿,所以我在主项目中有一个用于dumblib导入的打字文件。

declare module 'dumblib' {
  .
  .
  .

  export default class DumbLib {
    constructor(vars: Vars)
    .
    .
    .
  }

}

就像我说的那样,打字稿编译器似乎将其视为一切都能正确编译。但是,开玩笑不断抛出该错误。我有什么特别的玩笑可以识别我的打字?还是我可能没有看到其他不一致之处?

1 个答案:

答案 0 :(得分:1)

这里的问题是模块的实际导出与键入不匹配。由于类型(您说export default),TypeScript期望从模块中进行“默认”导出,但是整个模块类内部就是整个导出。

做以下两件事应该会有所帮助:

  1. 导入模块时,请确保它是这样的:
import * as dumblib from "dumblib";
  1. 在类型定义中应为:
declare module 'dumblib' {

  class DumbLib {
    // ...
  }

  namespace DumbLib {
    interface Foo {
      bar: string
    }
  }

  export = DumbLib
}