2016-02-25 79 views
3

我正在嘗試在TypeScrpt中爲Mongoose ODM使用ES6 Promises。在Mongoose代碼中使用ES6 Promise

我有以下線

mongoose.Promise = Promise; 

這給我下面的錯誤:

error TS2322: Type 'PromiseConstructor' is not assignable to type 'typeof Promise'. 
    Type 'Promise<any>' is not assignable to type 'Promise<any>'. 
    Property 'end' is missing in type 'Promise<any>'. 
+0

我正在按照Mongoose網站上的說明進行操作,http://mongoosejs.com/docs/promises.html IT好像打字稿編譯器對某些東西不滿意。 –

+0

請記住,Mongoose可能需要Promise規範的更全面的實現,而不是原生的'Promise'。香草的實施是非常基礎的。 – Andrew

+0

'require('mongoose')。Promise = Promise;'在節點'v5.3.0'下適合我,你的節點版本是什麼? – zangw

回答

3

您分配ES6本地promise到貓鼬promise

mongoose.Promise = Promise; 

你得到錯誤

Property 'end' is missing in type 'Promise'.

由於天然無極缺少屬性end存在於貓鼬無極(文件https://www.npmjs.com/package/mpromise)。

解決方法

您可以:

  • 哈克貓鼬定義撒謊說其一個ES6 Promise代替mpromise
  • 或抑制錯誤:

    mongoose.Promise = Promise as any; 
    
  • 或者完全不這樣做:)