プロンプトを使用するNode.jsライブラリと、ES6 Promise
を使用したTypeScript宣言を使用していますが、ライブラリ自体を任意の約束ライブラリを使用するようにカスタマイズすることもできます。タイプスクリプトのオーバーライドES6 Promise for Bluebird
したがって、Bluebird
をそのライブラリに渡して問題なく使用できます。
問題は、私のライブラリがES6 Promise
を介してのみインターフェイスを宣言しているため、宣言レベルでBluebird約束インタフェースを表示する方法です。
ライブラリ自体を変更することなく、別のPromiseプロトコルを使用していることをコンパイラに認識させる方法はありますか?
もちろん、後者はキャッチです。ライブラリを変更できるかどうかは疑いありません。
そしてそれは、そのライブラリがどのようなものであるかを理解するのは、それから、このシンプルなインタフェースを取るようにする任意の助けである場合:
interface Protocol {
methodName(param1:string, param2:number):Promise<Object[]>
}
をして、その大きさの1000倍を掛けます。
私は自分のファイルでプロトコルを偽装することはできません。 Promise
がデフォルトのES6ではなく、Bluebird TypeScriptが提供するものであることをコンパイラに伝える方法を理解する必要があります。
ライブラリ定義を上書きする独自の定義ファイルを含めることができます。それはあなたが意味することですか? –
@MikeMcCaughanライブラリ全体を自分のファイルでオーバーライドすることはできません。ライブラリのインターフェイスは膨大です。 –
さて、あなたはしたくないかもしれません;)。私が考えることができる唯一の他の方法は、 'Promise = bluebird.Promise'(または[構文が何であれ)(https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Namespaces%)です。 20and%20Modules.md))をライブラリのすべての定義ファイルの先頭に追加します。 –