TypeScript:TypeError:应用程序不是构造函数

时间:2018-10-25 15:18:32

标签: javascript node.js angular reactjs typescript

我只是从打字稿开始,并尝试为打字稿类创建实例,但是我没有成功。

下面是我的文件

App.ts

import { EventEmitter } from 'events';

interface Emitter extends EventEmitter {

}
class App {
   constructor(protected app: Emitter){}
}

export default = App;

我正在使用App.js命令将App.ts生成到tsc文件。文件已在dist文件夹中生成为App.js

我还有另一个名为Test.js的文件

在Test.js中,我将导入生成的App.js文件并为其创建一个实例,如下所示,但出现以下错误

  

TypeError:应用不是构造函数

Test.js

const App = require("./dist/App);

module.exports = function(app){
    const appInstance = new App(app)
}

尽管我在App.ts文件中有可用的构造函数,但我不明白为什么这会引发此类错误。

  

我在App.ts文件中做错什么了吗,这就是为什么我收到上述错误?

     

如何解决此问题?

3 个答案:

答案 0 :(得分:2)

您以错误的方式导出了应用,就像这样导出了

export default class App {
   constructor(protected app: App){}
}

答案 1 :(得分:2)

Typescript将export default = App;编译为具有属性默认的对象的导出。

您可以使用2种方法解决该问题:

  1. 将js文件中的要求更改为:const App = require("./dist/App).default;
  2. compilerOptions tsconfig.json中的allowSyntheticDefaultImports: false文件添加到您的文件中。

答案 2 :(得分:1)

在我的情况下,这是因为文件与类具有相同的名称。

即。 class MyThing {}是在名为MyThing.ts的文件中定义的。

将文件重命名为mything.ts解决了该问题。

希望这对某人有帮助。