【问题标题】:typescript Property 'formData' does not exist on type 'Event'?“事件”类型上不存在打字稿属性“formData”?
【发布时间】:2021-06-04 21:10:55
【问题描述】:

我在尝试编译我的打字稿代码时收到此错误消息:

typescript Property 'formData' does not exist on type 'Event'?
formElem.addEventListener("submit", (e) => {
    // on form submission, prevent default
    e.preventDefault();

    // construct a FormData object, which fires the formdata event
    new FormData(formElem);
});

formElem.addEventListener("formdata", (e) => {
    
    let data = e.formData;        // this is where the error occurs.
    .
    .
    })

我试图搜索Event 类型,它是Event 的子类型,但我并不走运。 我在这里做错了什么?欢迎提出任何建议

【问题讨论】:

  • 您究竟是如何触发formdata 事件的?
  • @zhulien 我编辑了问题以包括formdata 事件的触发

标签: typescript


【解决方案1】:

我看到您正在使用来自MDN's formdata event 的示例。您要查找的事件类型是 FormDataEvent,它提供了 formData 属性。但是,如果您查看浏览器兼容性表,您会发现并非所有浏览器(即 Safari)都支持它。

正如我所见,Typescript 目前还不支持这种事件类型,但他们有一个与之相关的未解决问题here。您也可以在general definitions 中验证它是否缺失。

在这个阶段,您要么必须引入一个自定义类型(如上面提供的问题中的那个),要么将事件注释为any。再一次,这在 Safari 上不起作用。

这里有一个somewhat related question,可能会对您有所帮助。

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 2017-03-02
  • 2021-09-07
  • 2017-08-07
  • 2017-03-26
  • 2017-09-06
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多