2017-05-16 8 views
1

ローカルにエクスポートされたクラスを拡張すると、そのクラスが機能します。typescriptインポートされたクラスを持つクラスを拡張する

の作業例:

export class classA { 

    constructor() { 
     super(); 
    } 
} 

export class classB extends classA { 

constructor() { 
    super(); 

    this.do(); 
} 

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

しかし、私は、ファイルの外からクラスAをインポートするとき、それは動作していません。

動作しない例:

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 
    } 
} 

ファイル構造:

Root/ 
- index.ts 

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

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

クラスAフォルダ内index.tsファイル:

export * from './classA'; 

ルートindex.tsファイル:

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

エラーメッセージ: クラスのClassBが_1.classA TypeError例外を拡張します。クラスは、未定義の値が、私は他のファイルにクラスAを使用したいと思いますので、このファイルから外部にロードする必要がコンストラクタまたはnull

ない拡張。どんな考えがなぜ起こるか? 【解決】

: ルートindex.tsでは、注文があるとしたファイル:

+0

あなたは '../ index.ts'ためのコードを投稿することができますか? 'class A'を' default'としてエクスポートしていますか? – rossipedia

+0

@rossipediaファイル構造とindex.tsファイルの内容で質問を更新しました – Twois

+0

classAをclassBで直接参照してみませんか? '../classA/classA'からimport {classA}を実行します。 – Poku

答えて

0

:これを試してみてください

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

インポートクラスAを直接。でなければならないため、ファイルのルートindex.tsで

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

constructor() { 
    super(); 

    this.do(); 
} 

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

私は、そのフォルダ内のindex.tsファイルとその中にエクスポートされたファイルを使用します。 – Twois

+0

./の代わりに./の1つのみを使用してください。コードを変更しました。 – Poku

関連する問題