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:
- Ändra din require i js-filen till det:
const App=require("./dist/App).default; - Lägg till i din
tsconfig.json-fil under compilerOptionsallowSyntheticDefaultImports: false.
Svar #2
du har exporterat appen på fel sätt, exportera den så här
export default class App {
constructor(protected app: App){}
}
