变量声明有时起作用,得到“名称空间错误”其​​他

时间:2017-09-27 20:25:11

标签: typescript fabricjs typescript-typings

我的项目中有以下代码:

1  declare const fabric: any;
2  class XCanvas {
3      public canvas: fabric.Canvas;
4
5      constructor() {
6          this.canvas = new fabric.Canvas();
7      }
8  }

我正在使用精彩的fabricjs库,但我使用的是最新版本,而@types库已经过时了几个版本。我很难在打字稿中使用它,因为它总是会出错,但这是我得到的最接近的。

所以,第6行编译得很好,没问题。但是第3行给了我这个错误:

Cannot find namespace 'fabric'.

为什么会这样?如何在没有打字的项目中使用它?

我没有导入或要求它,因为我使用脚本标记将其包含在HTML中。

1 个答案:

答案 0 :(得分:2)

您正在尝试使用您声明为any的内容的成员作为类型信息,但这并不常用。如果fabricany,则您无法将fabric.canvas用作类型注释。工作代码:

declare const fabric: any;

class XCanvas {
    public canvas: any; // <--

    constructor() {
        this.canvas = new fabric.Canvas();
    }
}