gpt4 book ai didi

module - 将模块中的接口(interface)用作类中的字段时出现 typescript 错误

转载 作者:搜寻专家 更新时间:2023-10-30 21:00:41 24 4
gpt4 key购买 nike

我正在为 fabric.js 提供一个类型定义文件。一般结构如下例所示:

declare module fabric {
export interface Canvas {
selectionBorderColor: string;
selectionColor: string;
...
}

var Canvas: {
new (): Canvas;
}
}

此模式允许我以“类似接口(interface)”的方式使用 fabric.Canvas,以便变量与 fabric.Canvas 接口(interface)相关联。同时它允许我调用“静态成员”(比如fabric.Canvas的构造函数)。

但这在类中使用接口(interface)“fabric.Canvas”的字段时会导致问题。以下示例显示了这种情况:

Typescript error when using interface from module as field within class

只有在将接口(interface)置于模块中时才会出现此问题,否则一切正常。

这个问题有什么解决方案吗?

最佳答案

存在一些类型混淆,因为您有一个同名的接口(interface)和一个字段 - 我知道这在 lib.d.ts 文件中很常见,但我认为这不是编写新的 TypeScript 代码时的一个好习惯。这似乎是定义现有代码的必要条件。

如果您将 var Canvas 重命名为 var MyCanvas(或其他任何名称),您的代码就可以正常工作。

我倾向于在我的接口(interface)前加上 I,例如 ICanvas - 但这还不是 TypeScript 约定(目前)。

declare module fabric {
export class Canvas {
selectionBorderColor: string;
selectionColor: string;
}
}

class MyClass {
canvas: fabric.Canvas;
}

关于module - 将模块中的接口(interface)用作类中的字段时出现 typescript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14031300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com