当前位置: 首页 > 面试题库 >

打字稿输入onchange event.target.value

虞祯
2023-03-14
问题内容

在我的react和typescript应用程序中,我使用:onChange={(e) => data.motto = (e.target as any).value}

我如何正确定义类的类型,这样我就不必用来绕过类型系统any

export interface InputProps extends React.HTMLProps<Input> {
...

}

export class Input extends React.Component<InputProps, {}> {
}

如果我把target: { value: string };我得到:

ERROR in [default] /react-onsenui.d.ts:87:18
Interface 'InputProps' incorrectly extends interface 'HTMLProps<Input>'.
  Types of property 'target' are incompatible.
    Type '{ value: string; }' is not assignable to type 'string'.

问题答案:

通常,事件处理程序应使用e.currentTarget.value,例如:

onChange = (e: React.FormEvent<HTMLInputElement>) => {
    const newValue = e.currentTarget.value;
}

您可以在这里阅读原因(还原“使SyntheticEvent.target通用,而不是SyntheticEvent.currentTarget。”)。

UPD:如@ roger-gusmao所述,它ChangeEvent更适合于键入表单事件。

onChange = (e: React.ChangeEvent<HTMLInputElement>)=> {
   const newValue = e.target.value;
}


 类似资料:
  • 问题内容: 我在这里找到了解决方案:Webpack和Typescript图像导入 但我为此得到错误: 我想我需要以某种方式强制导入,但无法弄清楚如何。我在React中做到这一点。我看到该属性定义为,这就是为什么会弹出错误。 这是代码: HTML: 并基于上述解决方案进行定义: tsconfig: 问题答案: 摆脱该错误的一种方法是通过按如下方式修改d.ts文件: 去掉 或者您可以执行以下操作: 更

  • 我正在努力寻找 有什么不同?

  • 问题内容: 我将TypeScript与/一起使用。 对于使用模块,《 TypeScript手册》显示以下语法: 而且文件显示: 我还搜索了MSDN博客,但找不到任何东西。 截至2016年初,哪个更正确?两者之间有什么区别(如果有)? 在哪里可以找到有关要使用的最新语法的信息的最佳来源,以便将来我可以找到此信息? 问题答案: 这些大多是等效的,但有一些限制不是。 创建一个标识符,它是一个 模块对象

  • 在XML文件中,我们有一个表示PDF文件的base64编码字符串,该字符串包含一些表表示,即与本例类似。当解码该PDF文档的base64字符串时(如下图所示),我们最终得到的PDF文档大小为66KB,可以在任何PDF查看器中正确打开。 尝试使用TypeScript中的解码相同的base64编码字符串时(在VSCode扩展名内),即使用以下功能: 我们最终得到了一个大小为109KB的PDF文件,以及

  • 问题内容: 我希望能够实例化一个Typescript类,在运行时可以获取该类和构造函数的详细信息。我想编写的函数将包含类名和构造函数参数。 问题答案: 您可以尝试: 编辑 此版本可在TypeScript操场上使用,例如:

  • 我正在使用ES6导入语法并导入一个第三方ES5模块,该模块导出一个未命名函数的单个导出: 因为没有默认导出,而是一个匿名函数输出,我必须像这样导入和使用: 这会产生Typescript错误: 错误TS2349:无法调用其类型缺少调用签名的表达式。类型“typeof”没有兼容的调用签名。 我想我之所以会这样是因为我没有正确键入ES5导入(没有公共键入文件)。当我认为该函数是默认导出时,我有以下定义: