2015-03-13 47 views
0

我是面料和打字稿的新手。現在我試圖使用這個庫,我遇到了一個奇怪的錯誤。在我的代碼中,我試圖做到這一點:是fabricjs.d.ts真的缺少動畫功能?

var rect = new fabric.Rect(); 
    rect.animate('angle', '-=5', { 
     onChange: this.canvas.renderAll.bind(this.canvas) 
    }); 

但它告訴我,'Property animate does not exist on type IObject'。當我檢查定義文件時,我發現在fabric.util中只有一個稱爲animate的函數。

var util: { 
    addClass(element: HTMLElement, className: string); 
    addListener(element, eventName: string, handler); 
    animate(options: { 
     onChange?: (value: number) => void; 
     onComplete?:() => void; 
     startValue?: number; 
     endValue?: number; 
     byValue?: number; 
     easing?: (currentTime, startValue, byValue, duration) => number; 
     duration?: number; 
    }); 
    createClass(parent, properties); 
    ... } 

我從 https://github.com/borisyankov/DefinitelyTyped/blob/master/fabricjs/fabricjs.d.ts

難道真的不完整的還是我失去了一些重要的定義是什麼?

+1

定義文件缺少邊緣功能並不罕見。然而,圖書館作者錯過文檔 – basarat 2015-03-13 12:23:24

回答

3

我不是專家,但我看了一下,我認爲你是對的。

它看起來像所有結構對象應該獲得動畫方法,但在打字稿定義文件中,IObject沒有指定animate方法,因此沒有對象會得到包括IRect的方法,該方法是/擴展IObject。

我想這和它的作品:

在fabricjs.d.ts找到IObject提取聲明(搜索「界面IObject提取」),然後添加下面的一行。

export interface IObject extends IObservable { 

    //this line: 
    animate(property: string, value: any, options?: any): IObject; 

保存.d.ts文件,它應該適用於您的示例,但參數可能不是理想的類型。

希望它有幫助。

+1

PS更爲常見。 GitHub上的DefinitelyTyped集合僅由貢獻者集合在一起,目前僅查看1人(https://github.com/jschaf)對fabricjs有幫助,僅在去年12月纔有所幫助。越來越多的人轉向使用TypeScript並且是面向js用戶,希望更多的參與者能夠讓這些打字稿得到全面覆蓋。 – 2015-03-13 13:56:41

+1

謝謝約翰。我添加了你的建議,它完美的工作。每次遇到丟失的東西時,我都會在定義中添加更多內容。我很可能很快將我的更改添加到回購中。 – webtopf 2015-03-16 08:07:59