我只是从打字稿开始,并尝试为打字稿类创建实例,但是我没有成功。
下面是我的文件
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文件中做错什么了吗,这就是为什么我收到上述错误?
如何解决此问题?
答案 0 :(得分:2)
您以错误的方式导出了应用,就像这样导出了
export default class App {
constructor(protected app: App){}
}
答案 1 :(得分:2)
Typescript将export default = App;
编译为具有属性默认的对象的导出。
您可以使用2种方法解决该问题:
const App = require("./dist/App).default;
tsconfig.json
中的allowSyntheticDefaultImports: false
文件添加到您的文件中。答案 2 :(得分:1)
在我的情况下,这是因为文件与类具有相同的名称。
即。 class MyThing {}
是在名为MyThing.ts
的文件中定义的。
将文件重命名为mything.ts
解决了该问题。
希望这对某人有帮助。