Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeScript 2.0中React.Events的正确用法?_Javascript_Node.js_Reactjs_Typescript - Fatal编程技术网

Javascript TypeScript 2.0中React.Events的正确用法?

Javascript TypeScript 2.0中React.Events的正确用法?,javascript,node.js,reactjs,typescript,Javascript,Node.js,Reactjs,Typescript,我有一个使用React和TypeScript的应用程序。我最近更新了我的类型定义,使用npm@types名称空间将它们存储在我的节点模块文件夹中 以前在处理DOM事件时,这样的方法签名满足类型定义: public updateValue(e: React.FormEvent): void { 但现在我发现编译器错误: (46,25): error TS2314: Generic type 'FormEvent<T>' requires 1 type argument(s).

我有一个使用React和TypeScript的应用程序。我最近更新了我的类型定义,使用npm
@types
名称空间将它们存储在我的
节点模块
文件夹中

以前在处理DOM事件时,这样的方法签名满足类型定义:

public updateValue(e: React.FormEvent): void {
但现在我发现编译器错误:

(46,25): error TS2314: Generic type 'FormEvent<T>' requires 1 type argument(s).  
(46,25):错误TS2314:泛型类型“FormEvent”需要1个类型参数。
在查看react type definitions文件夹后,它确实接受了一个泛型:

interface FormEvent<T> extends SyntheticEvent<T> {
}
接口FormEvent扩展了事件{
}
我的问题基本上是这个泛型的用例是什么,应该如何使用它,它增加了什么优势?我可以简单地将我的方法更改为:

public updateValue(e: React.FormEvent<any>): void {
public updateValue(e:React.FormEvent):void{

这将满足类型定义要求。但是预期的用例是什么?

从读取您链接的react.d.ts文件中,看起来泛型参数对应于属性中指定的HtmleElement。指示这通常是一个元素

[currentTarget: EventTarget & T;]
到目前为止,T仍然未确定

interface ReactHTMLElement<T extends HTMLElement> extends DOMElement<HTMLAttributes<T>, T> {
接口反应HtmleElement扩展了DomeElement{
这似乎支持T是一个元素的想法。我相信泛型的目标是能够访问特定于元素的属性(例如,使用
HTMLImageElement
的src标记等)在currentTarget属性上,有人建议在核心lib.d.ts中进行类似的操作,并对涉及的问题进行一些讨论


据我所知,react类型化是同一个核心思想的实现。

你说你是从@types中得到这个定义的?考虑到没有泛型的定义,这是令人惊讶的。@types是从
types 2.0
中提取的-我不确定是否可以针对不同的repo?