类型“事件”上不存在打字稿属性“formData”?

时间:2021-03-06 11:39:09

标签: typescript

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

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 的子类型,但我并不走运。 我在这里做错了什么?欢迎任何建议

1 个答案:

答案 0 :(得分:1)

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

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

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

这里有一个somewhat related question可以帮助您。