javascript - TypeScript: TypeError: App är inte en konstruktor


Jag har precis börjat med TypeScript och försöker skapa en instans av TypeScript-klassen men jag lyckas inte.

Nedan är mina filer

App.ts

import { EventEmitter } from 'events';

interface Emitter extends EventEmitter {

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

export default = App;

Jag genererar App.ts till App.js-filen med hjälp av tsc-kommandot. Filen skapades i dist-mappen som App.js

Jag har en annan fil som heter Test.js

I Test.js importerar jag den genererade App.js-filen och skapade en instans av den som nedan, men jag får följande fel

TypeError: App är inte en konstruktor

Test.js

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

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

Jag förstår inte varför detta ger ett sådant fel trots att jag har en konstruktor tillgänglig i App.ts-filen.

Gör jag något fel i App.ts-filen och därför får jag ovanstående fel?

Hur kan jag lösa detta problem?

Svar #1

Typescript kompilerar export default=App; som en export av ett objekt med en egenskap default.

Du kan lösa det med 2 metoder:

  1. Ändra din require i js-filen till det: const App=require("./dist/App).default;
  2. Lägg till i din tsconfig.json-fil under compilerOptions allowSyntheticDefaultImports: false.

Svar #2

du har exporterat appen på fel sätt, exportera den så här

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

Relaterade artiklar