簡體   English   中英

TypeScript:TypeError:App 不是構造函數

[英]TypeScript: TypeError: App is not a constructor

我剛開始使用打字稿並嘗試為打字稿類創建一個實例,但我沒有成功。

下面是我的文件

應用程序

import { EventEmitter } from 'events';

interface Emitter extends EventEmitter {

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

export default = App;

我正在使用tsc命令將App.js生成到App.js文件。 該文件在 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 文件中做錯了什么,這就是我收到上述錯誤的原因嗎?

我該如何解決這個問題?

Typescript 編譯export default = App; 作為具有屬性default的 Object 的導出。

你可以用兩種方法解決這個問題:

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

你以錯誤的方式導出了應用程序,像這樣導出

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

就我而言,這是因為文件與類同名。

IE。 class MyThing {}在名為MyThing.ts的文件中定義。

將文件重命名為mything.ts解決了這個問題。

希望這可以幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM