fabricjs.d.ts真的缺少动画功能吗?

时间:2015-03-13 09:04:10

标签: typescript fabricjs

我是面料和打字稿的新手。现在我正在尝试使用该库,我遇到了一个奇怪的错误。在我的代码中,我尝试这样做:

    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 个答案:

答案 0 :(得分:3)

我不是专家,但我看了看,我认为你是对的。

看起来所有结构对象都应该获得animate方法,但是在typescript定义文件中,IObject没有指定animate方法,因此没有对象可以获得包含IRect的方法,即/ extends IObject。

我试过这个并且有效:

在fabricjs.d.ts中找到IObject声明(搜索'interface IObject'),然后添加下面的行。

export interface IObject extends IObservable {

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

保存.d.ts文件,它应该适用于您的示例,但参数可能不是理想的类型。

希望它有所帮助。