我正在为fabric.js提供一个类型定义文件。一般结构如下所示:
declare module fabric {
export interface Canvas {
selectionBorderColor: string;
selectionColor: string;
...
}
var Canvas: {
new (): Canvas;
}
}
这种模式允许我以类似“接口”的方式使用fabric.Canvas,以便变量与fabric.Canvas接口相关联。同时它允许我调用“静态成员”(例如fabric.Canvas的构造函数)。
但是当在类中使用接口“fabric.Canvas”时会导致问题。以下示例显示了这种情况:
仅在将接口放置在模块中时才会出现此问题,否则一切正常。
针对此问题的任何解决方案?
答案 0 :(得分:2)
有一些类型的混淆,因为你有一个接口和一个具有相同名称的字段 - 我知道这在lib.d.ts
文件中很常见,但我认为在编写新的TypeScript时这不是一个好习惯码。这似乎是定义现有代码的必要条件。
如果您将var Canvas
重命名为var MyCanvas
(或其他任何内容),则代码可以正常运行。
我倾向于在接口前面添加I
,例如ICanvas
- 但这不是TypeScript约定(还有)。
declare module fabric {
export class Canvas {
selectionBorderColor: string;
selectionColor: string;
}
}
class MyClass {
canvas: fabric.Canvas;
}