2017-05-16 1 views
1

Wenn ich eine lokal exportierte Klasse erweitern, funktioniert es.typescript erweitern Klasse mit importierter Klasse

Arbeitsbeispiel:

export class classA { 

    constructor() { 
     super(); 
    } 
} 

export class classB extends classA { 

constructor() { 
    super(); 

    this.do(); 
} 

private do(): void { 
    // do something 
} 

Aber wenn ich classA von außerhalb der Datei importieren arbeitet es nicht.

nicht Arbeitsbeispiel:

import { classA } from '../'; // I use index.ts file, so the reference is good. 

export class classB extends classA { 
    constructor() { 
     super(); 

     this.do(); 
    } 

    private do(): void { 
     // do something 
    } 
} 

Dateistruktur:

Root/ 
- index.ts 

- classA(folder)/ 
    - index.ts 
    - classA.ts 

- classB(folder)/ 
    - index.ts 
    - classB.ts 

Die index.ts-Datei im Ordner classA:

export * from './classA'; 

Die Wurzel index.ts Datei:

export * from './classB'; 
export * from './classA'; 

Fehlermeldung: Klasse classB _1.classA erstreckt Typeerror: Klasse erweitert Wert kein Konstruktor oder null

Ich brauche zu laden außen aus dieser Datei, weil Ich mag classA würde in anderen Dateien verwenden, ist nicht definiert. .. Irgendeine Idee warum passiert das?

[gelöst]: In der Wurzel index.ts Datei die Reihenfolge sein muß:

export * from './classA'; 
export * from './classB'; 
+0

Können Sie den Code für '../ index.ts' posten? Exportieren Sie "Klasse A" als "Standard"? – rossipedia

+0

@rossipedia Ich habe die Frage mit der Dateistruktur und dem Inhalt von index.ts Dateien aktualisiert – Twois

+0

Warum nicht Klasse A direkt in Klasse B verweisen? Importieren Sie {classA} aus '../classA/classA'; – Poku

Antwort

0

In der Wurzel index.ts Datei muß die Reihenfolge:

export * from './classA'; 
export * from './classB'; 
0

Import classA direkt. Versuchen Sie folgendes:

import { classA } from '../classA/classA'; 
export class classB extends classA { 

constructor() { 
    super(); 

    this.do(); 
} 

private do(): void { 
    // do something 
} 
+0

Ich verwende die Datei index.ts in diesem Ordner und die darin exportierte Datei. – Twois

+0

sollten Sie dann nur ein ./ anstelle von ../ verwenden. Ich habe meinen Code geändert. – Poku