2016-12-17 15 views
0

私はカルーセルと呼ばれるクラスを作成しています。そのクラスの中から、親子関係を通じてカルーセルに結びつくPipsというクラスを呼びたいと思っています。私の現在のコードは次のようになります輸入/輸出、ES6および拡張クラス

Super expression must either be null or a function, not undefined

私が持っている問題は、私は、次のエラーが発生しますということです

// carousel.js 

import { Pips } from './pips' 

export class Carousel { 
    constructor(options) { 
    this.pip_type = options.pip_type; 
    } 

    setup() { 
    this.initPips(); 
    } 

    initPips() { 
    var p = new Pips(
     { 
     carousel_name : 'carousel', 
     pip_type  : this.pip_type 
     } 
    ); 
    } 
} 


// pips.js 

import { Carousel } from './carousel' 

export class Pips extends Carousel { 
    constructor(options) { 
    super(options); 
    console.log('Pips Initialised'); 
    } 

} 

起こって循環依存があることは明らかですしかし、別のファイルにある別のクラスに1つのクラスを拡張しようとすると、ES6の構文でそれを避ける方法がわかりません。import { Carousel }...をpips.jsから削除すると、単にエラーが発生しますCarousel is undefined

Pipsクラスを私のカルーセルクラスと同じファイルに置くとその下にある場合、このエラーは発生しません。そのため、問題はES6ホイストインポートであると考えられます。

この2つのクラスの間にこの関係を確立するにはどうすればよいでしょうか?

答えて

1

これは、クラス階層の設計上の問題です。スーパークラスは、サブクラスを認識したり参照したりしてはいけません。

Check here for details

おそらく、あなたの代わりに循環参照をやろうとしているの組成物で行く必要があります。

ピップスがカルーセルを継承する理由は本当にわかりません。

これが役に立ちます。