使用NuGet更新全部套件後,jQuery定義檔出現TypeScript編譯錯誤:

Error    545    Interface 'JQueryPromise<T>' incorrectly extends interface 'JQueryGenericPromise<T>'.
  Types of property 'then' are incompatible.
    Type '(doneCallbacks: any, failCallbacks: any, progressCallbacks?: any) => JQueryPromise<T>' is not assignable to type '{ <U>(doneFilter: (value?: T, ...values: any[]) => U | JQueryPromise<U>, failFilter?: (...reasons...'.
      Type 'JQueryPromise<T>' is not assignable to type 'JQueryPromise<void>'.
        Type 'T' is not assignable to type 'void'. 

檢查發現jQuery TypeScript定義檔被更新到2.2.3版,是這幾天(3/24)才推出的,莫非如上次事件與TypeScript新版有關?檢查TypeScript 1.4 for VS2013在1/16之後並無更新,先排除TypeScript套件未更新因素。

懷疑新版定義檔有Bug,但爬文未發現有人反應類似狀況(2.2.3截至目前下載量不到800次,可能發現問題的人還不多)。

使用Package Manager Console下指令Install-Package jquery.TypeScript.DefinitelyTyped -Version 2.2.2強制裝回2.2.2版(套件名稱及版號不用強記,按Tab會有提示),問題消失!順手將問題回報到Github,先以降版做為暫時解決方案。

2015-04-01 更新:進一步調查,問題導因於KendoUI定義檔自行補充部分jQuery宣告與jQuery 2.2.3版定義衝突(沒用KendoUI定義檔的人不會遇到),暫時解法是將問題宣告註解掉,已將問題反應給Telerik,就等待Telerik修正囉!

Comments

Be the first to post a comment

Post a comment