需要使用带有TypeScript的fabricjs.d.ts的示例

Mat*_*ord 6 javascript fabricjs angularjs typescript

我在我试图转换为使用TypeScript的项目中使用fabricjs,但我无法弄清楚如何使用它.以前我通过执行以下操作创建自己的自定义对象:

my.namespace.Control = fabric.util.createClass(fabric.Object, {
    id: "",
    type: 'Control',
    color: "#000000", 
    ...
});
Run Code Online (Sandbox Code Playgroud)

在我的新项目中,我已经从这里安装了TypeDefinition文件,但我无法弄清楚应该如何使用它?

查看.d.ts文件,fabric.Object似乎不是一个Function,所以不允许传递给createClass,而createClass本身返回void,所以我不能将值赋给变量.

即使所有这些都有效,我应该如何格式化它以便它以TypeScript方式工作?即,我要导出什么,以便我可以将其导入到需要Control类的其他位置?

有人真的有这样做的例子吗?

小智 -1

使用 Fabricjs.d.ts 的旧方法位于文件顶部:

/// <reference path="path/to/your/fabricjs.d.ts" />
Run Code Online (Sandbox Code Playgroud)

如果您通过tsd获得它,则必须引用您的 tsd.d.ts 捆绑文件

但现在使用 typescript 1.6.2 和vscode,您只需通过 tsd 下载参考文件即可获取代码中的定义。

在 d.ts 文件中,您可以找到 2 个方法签名:

createClass(parent: Function, properties?: any): void;

createClass(properties?: any): void;
Run Code Online (Sandbox Code Playgroud)

因此,您的代码似乎无效,因为作为接口 IObjectStatict 的 Fabric.Object 无法分配给类型 Function。您可以将 Fabric.Object 作为函数进行转换

my.namespace.Control = fabric.util.createClass(<Function>fabric.Object, {
  id: '',
  type: 'Control',
  color: '#000000', 
  ...
});
Run Code Online (Sandbox Code Playgroud)