我有一個Node.js庫使用承諾,其TypeScript聲明使用ES6 Promise
,即使庫本身可以定製使用任何承諾庫。TypeScript覆蓋ES6承諾與藍鳥
所以,我沒有問題在Bluebird
傳入該庫,以便它可以使用它。
問題是如何使藍鳥承諾界面在聲明級別可見,因爲我的庫只通過ES6 Promise
聲明其接口。
有沒有辦法讓編譯器意識到我正在使用不同的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% 20和%20Modules.md))位於所有庫定義文件的頂部。 –