【问题标题】:is fabricjs.d.ts really missing animate function?fabricjs.d.ts 真的缺少动画功能吗?
【发布时间】:2015-05-15 16:56:18
【问题描述】:

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

    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

是真的不完整还是我遗漏了一些重要的东西?

【问题讨论】:

  • 定义文件缺少边缘函数的情况并不少见。然而,图书馆作者遗漏文档的情况更为常见

标签: typescript fabricjs


【解决方案1】:

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

看起来所有的fabric对象都应该得到animate方法,但是在打字稿定义文件中,IObject没有指定animate方法,因此没有对象会得到包括IRect在内的方法,它是/扩展IObject。

我试过了,效果很好:

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

export interface IObject extends IObservable {

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

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

希望对你有帮助。

【讨论】:

  • 附言。 GitHub上的DefiniteTyped集合仅由贡献者汇总,到目前为止,只有1个人(github.com/jschaf)对fabricjs有所帮助,而且仅在去年12月。越多的人转向 TypeScript 并且是 Fabric js 用户,希望有更多的贡献者可以使 typescript def 得到全面覆盖。
  • 谢谢约翰。我添加了您的建议,并且效果很好。每当我遇到遗漏的东西时,我都会在定义中添加更多的东西。我可能很快也会将我的更改添加到存储库中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 2018-09-17
相关资源
最近更新 更多