1

私は、任意のクラスをreact-server取り、実行時にメソッドを追加するという名前のパッケージを使用しています。ラップするクラスが次のようなインターフェイスを持つことを期待しています

interface {
    getElements(): Array<React.Component>
}

のようなクラスにメソッドを追加し、クラスgetRequest()内からも参照できます。

次のようなページ クラスを想像してください。

class SimplePage {
  getElements() {
    // Right now, this wouldn't compile, because this.getRequest() is
    // not an available method.
    const request: Request = this.getRequest();
    // ...
  }
}

this.getRequest()それがコンパイル時に実際には存在せず、定義ファイルから参照できる実際のクラスやインターフェイスを実際に提供していないことを考えると、react-serverそれを呼び出すために使用できる定義を作成する方法はありますか?実際、何かがPageタイプであり、これらのメソッドが使用可能ですか?

理想的には、これらを定義ファイル ( .d.ts) のどこかに提供して、 を使用するすべてのアプリで参照できるようにしたいと考えていますreact-serverthisまた、メソッドを参照するたびに他の何かにキャストすることを余儀なくされることなく、これを行いたいと思っています。

4

1 に答える 1

1

私が考えることができる2つのオプションがあります。
次のインターフェースがあるとします。

interface ExtendedPage {
    getRequest(): Request;
}

(1)このパラメータ:

class SimplePage {
    getElements(this: SimplePage & ExtendedPage) {
        const request: Request = this.getRequest();
        // ...
    }
}

(2) スタンドイン プロパティ ( mixins など)を使用してインターフェイスを実装します。

class SimplePage implements ExtendedPage {
    getElements() {
        const request: Request = this.getRequest();
        // ...
    }

    getRequest: () => Request;
}

編集

クラスを宣言して拡張できます。

declare class ExtendedPage {
    getRequest(): Request;
}

class SimplePage extends ExtendedPage {
    ...
}
于 2017-06-08T22:13:57.403 に答える