如何绑定到表单';s ajax:JQuery/Rails-UJS在typescript中的成功

如何绑定到表单';s ajax:JQuery/Rails-UJS在typescript中的成功,jquery,ruby-on-rails,typescript,Jquery,Ruby On Rails,Typescript,我正在使用Rails6、webpacker和ts加载程序。我安装了@types/jquery。我有这个密码 interface PDFSave { url: string; } interface AjaxSuccessEvent { detail: [PDFSave, any, any]; } $(() => { const setup = ($container: JQuery<HTMLElement>) => { $container

我正在使用Rails6、webpacker和ts加载程序。我安装了@types/jquery。我有这个密码

interface PDFSave {
  url: string;
}

interface AjaxSuccessEvent {
  detail: [PDFSave, any, any];
}

$(() => {
  const setup = ($container: JQuery<HTMLElement>) => {
    $container
    .on('ajax:success', (e: AjaxSuccessEvent) => {
      const [data] = e.detail;
      // here I want to use the PDFSave data...
    })
  };

  const $container = $('form.pdf-save-form');
  setup($container);
});
接口PDFSave{
url:string;
}
接口AjaxSuccessEvent{
详情:[PDFSave,any,any];
}
$(() => {
常量设置=($container:JQuery)=>{
$container
.on('ajax:success',(e:AjaxSuccessEvent)=>{
常数[数据]=e.细节;
//这里我想使用PDFSave数据。。。
})
};
const$container=$('form.pdf保存表单');
设置($container);
});
Typescript说:

/Users/(me)/work/(rails应用文件夹)/app/javascript/(相关文件)中的[tsl]错误。ts(12,9) TS2769:没有与此调用匹配的重载。 上一次重载导致以下错误。 “字符串”类型的参数不能分配给“TypeEventHandlers void,HtmleElement,HtmleElement>”类型的参数

我知道Rails UJS将ajax调用的解析json作为3元组的第一个元素返回到事件的detail属性中。我正在返回{url:}的json:http://some/place“}来自服务器端的ajax调用


我的问题是如何在没有编译器错误的情况下优雅地让这个概念通过Typescript。

我能够更改事件类型以适应(…)重载上的一个jquery
,然后向下转换以符合我的特殊事件类型。还必须扩展JQueryEventObject

interface PDFSave {
  url: string;
}

interface AjaxSuccessEvent extends JQueryEventObject {
  detail: [PDFSave, any, any];
}

$(() => {
  const setup = ($container: JQuery<HTMLElement>) => {
    $container
    .on('ajax:success', (e: JQueryEventObject) => {
      const [data] = (e as AjaxSuccessEvent).detail;
      // can use PDFSave data...
    })
  };

  const $container = $('form.pdf-save-form');
  setup($container);
});
接口PDFSave{
url:string;
}
接口AjaxSuccessEvent扩展了JQueryEventObject{
详情:[PDFSave,any,any];
}
$(() => {
常量设置=($container:JQuery)=>{
$container
.on('ajax:success',(e:JQueryEventObject)=>{
常量[数据]=(e作为AjaxSuccessEvent)。详细信息;
//可以使用PDFSave数据。。。
})
};
const$container=$('form.pdf保存表单');
设置($container);
});