为没有定义文件的JQuery插件扩展JQueryStatic

时间:2016-07-20 08:00:45

标签: typescript typescript1.8

我将IFrame Transport Plugin用于JQuery。它在iframe接口上引入了一个新属性JQueryAjaxSettings。不幸的是,插件没有定义文件,这意味着它会在Intellisense中抛出错误,并在编译项目时因为我必须在我的代码中使用iframe属性。

所以我在一个单独的d.ts文件中创建了2个新接口来扩展JQuery的定义文件:

interface JQueryIframeTransportStatic extends JQueryStatic {
    ajax(settings: IJQueryIframeTransportAjaxSettings): JQueryXHR;
}

interface IJQueryIframeTransportAjaxSettings extends JQueryAjaxSettings {
    iframe: boolean;
}

但是这会在编译时抛出以下错误:

  

TS2430:构建:界面' JQueryStaticIframeTransport'错误地扩展了界面' JQueryStatic'。

我发现TypeScript可能会被我的界面引入的新ajax函数搞糊涂了。但它有不同的签名。我怎么能延长它?

1 个答案:

答案 0 :(得分:2)

界面可以像这样扩展:

interface JQueryStatic {
    ajax(settings: IJQueryIframeTransportAjaxSettings): JQueryXHR;
}

interface IJQueryIframeTransportAjaxSettings extends JQueryAjaxSettings {
    iframe: boolean;
}


这只是添加了新的函数声明,不需要extends构造。在此基础上,您只需一个声明就可以做到,即

interface JQueryAjaxSettings {
    iframe: boolean;
}