【问题标题】:Unable to extend interface in Typescript with data property on even with the same data type即使具有相同的数据类型,也无法在具有数据属性的 Typescript 中扩展接口
【发布时间】: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 不能同时扩展类型JQueryEventObjectIMyInterfaceJQueryEventObjectIMyInterface 类型的属性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


【解决方案1】:

使用最新的 TypeScript (1.5) + IDE 编译良好,没有错误:

interface JQueryEventObject extends BaseJQueryEventObject,
    JQueryInputEventObject, JQueryMouseEventObject, JQueryKeyEventObject { }{ }

interface IMyInterface {
    data: any;
}

interface IMyCombinedInterface extends JQueryEventObject, IMyInterface { }

所以

是一个错误,但已被修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2019-11-25
    • 2013-03-28
    • 2016-08-30
    • 2020-08-25
    • 2021-02-12
    • 2021-09-26
    相关资源
    最近更新 更多