使用 Preact + Typescript 的类型安全事件处理程序

Posted

技术标签:

【中文标题】使用 Preact + Typescript 的类型安全事件处理程序【英文标题】:Typesafe event handlers with Preact + Typescript 【发布时间】:2020-01-02 19:02:27 【问题描述】:

我正在使用 Preact 编写一个简单的组件,它使用 onChange 处理程序来处理 <input/> 元素:

function Example(props: ) 
  return <input onChange=(e) => 
    const  value  = e.currentTarget;
    console.log(value);
   />

上面的代码会产生以下错误:

Property 'value' does not exist on type 'EventTarget'.ts(2339)

最快的解决方法是进行类型转换:

    const el = (e.currentTarget as htmlInputElement).value;

但我不想将类型转换添加到应用程序以进行这种常见的操作。

在不使用类型转换或any 类型的情况下编写表单事件处理程序的正确方法是什么?

环境信息:

"strict": true 在 tsconfig.json 中 preact@8.5.2 没有安装外部类型。使用包默认值。

【问题讨论】:

你能指定你使用的打字稿配置,还有哪些@types? @TalgatSaribayev 我已经更新了这个问题。谢谢。 【参考方案1】:

免责声明:我在 Preact 工作。

这是我们当前的 Preact 类型中的一个错误。这些与preact npm 包本身一起分发。这是我们的跟踪器中与此相关的一个问题:https://github.com/preactjs/preact/issues/1930

【讨论】:

以上是关于使用 Preact + Typescript 的类型安全事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

在 Preact 和 typescript 中使用 web 组件

最新的 preact 和 typescript 模块传递了错误的类型

preact-cli/babel/typescript - 让 Symbol.iterator 和 [...spread] 正常工作

如何使用 preact-router 以编程方式导航?

如何创建具有 HTMLAttributes 作为道具的组件

在 Preact 中渲染原始 HTML 而不使用 Preact 标记?