我将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
函数搞糊涂了。但它有不同的签名。我怎么能延长它?
答案 0 :(得分:2)
界面可以像这样扩展:
interface JQueryStatic {
ajax(settings: IJQueryIframeTransportAjaxSettings): JQueryXHR;
}
interface IJQueryIframeTransportAjaxSettings extends JQueryAjaxSettings {
iframe: boolean;
}
这只是添加了新的函数声明,不需要extends
构造。在此基础上,您只需一个声明就可以做到,即
interface JQueryAjaxSettings {
iframe: boolean;
}