我是面料和打字稿的新手。现在我正在尝试使用该库,我遇到了一个奇怪的错误。在我的代码中,我尝试这样做:
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
它真的不完整还是我遗漏了一些重要的东西?
答案 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文件,它应该适用于您的示例,但参数可能不是理想的类型。
希望它有所帮助。