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

问题描述 投票:0回答:4

我刚刚开始使用打字稿并尝试创建打字稿类的实例,但我没有成功。

以下是我的文件

应用程序.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 文件并为其创建一个实例,如下所示,但出现以下错误

类型错误:应用程序不是构造函数

测试.js

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

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

我不明白为什么会抛出这样的错误,尽管我在 App.ts 文件中有可用的构造函数。

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

如何解决这个问题?

javascript node.js angular reactjs typescript
4个回答
7
投票

Typescript 将

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

您可以通过两种方法解决:

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

4
投票

你导出App的方式不对,像这样导出

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

2
投票

就我而言,这是因为文件与类同名。

即。

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

将文件重命名为

mything.ts
解决了问题。

希望这对某人有帮助。


0
投票

Esto puede ser si usan typescript y usan script en su html, deben agregarlo al html y por eso generic error

© www.soinside.com 2019 - 2024. All rights reserved.