如何绑定到表单的ajax:使用JQuery/Rails UJS成功键入脚本

我使用的是Rails6、webpacker和ts-loader。我安装了@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);
});

Typescript写道:

/Users/(me)/work/(rails app文件夹)/app/javascript/(相关文件).ts(12,9)TS2769中的tsl错误:没有重载匹配此调用。最后的重载给出了以下错误。'string‘类型的参数不能赋值给'TypeEventHandlers void,HTMLElement,HTMLElement>’类型的参数。

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

我的问题是,我如何才能优雅地让这个概念在Typescript中通过,而不会出现编译器错误。

转载请注明出处:http://www.lsql.net/article/20230430/970886.html