【发布时间】:2014-01-24 16:54:02
【问题描述】:
Typescript(使用 Visual Studio 2012 和 TypeScript v0.9.5)有一个奇怪的问题,希望有人能解决。
以下代码可以正常工作:
interface IA {
data: any;
}
interface IB {
data: any;
}
interface IC extends IA, IB { }
但是,当使用JQueryEventObject 的声明如下:
interface JQueryEventObject extends BaseJQueryEventObject,
JQueryInputEventObject, JQueryMouseEventObject, JQueryKeyEventObject,
JQueryPopStateEventObject { }
BaseJQueryEventObject 声明在哪里:
interface BaseJQueryEventObject extends Event {
data: any;
delegateTarget: Element;
isDefaultPrevented(): boolean;
isImmediatePropogationStopped(): boolean;
...
}
当我尝试这样做时:
interface IMyInterface {
data: any;
}
interface IMyCombinedInterface extends JQueryEventObject, IMyInterface { }
它抱怨以下消息:
接口IMyCombinedInterface 不能同时扩展类型JQueryEventObject 和IMyInterface:JQueryEventObject 和IMyInterface 类型的属性data 的类型不相同。
任何人都知道我做错了什么或者这可能是一个错误吗?
【问题讨论】:
-
这对我来说似乎是一个错误。
-
这是使用 0.9.1.1 为我编译的,你编译的是什么版本的 TS
-
它可以编译,但是 VS 抱怨(抱歉,将更新帖子以说明我正在使用 Visual Studio)。我正在使用 TS 的 v0.9.5。
-
我刚刚升级到 0.9.5。我仍然没有得到错误。作为一些诊断,声明 2 个类型为 IMyInterface 和 JQueryEventObject 的变量,并查看智能感知为每个变量的数据属性提供了什么。我还建议您验证您是否拥有来自definitelyTyped 的最新版本的jquery.d.ts。一些旧版本的 d.ts 文件已被此编译器错误所喜欢
标签: javascript typescript