在TypeScript 2.0中正确使用React.Events?

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

以前在使用DOM Events时,像这样的方法签名符合types定义:

 public updateValue(e: React.FormEvent): void { 

现在,但是我得到编译器错误:

 (46,25): error TS2314: Generic type 'FormEvent<T>' requires 1 type argument(s). 

而在查看反应types定义文件夹后,它确实采取了一个通用的:

 interface FormEvent<T> extends SyntheticEvent<T> { } 

我的问题基本上是这个generics的用例是什么,它应该如何使用,它增加了什么优点? 我可以简单地将我的方法更改为:

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

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

通过阅读你已经链接的react.d.ts文件,看起来像通用参数对应于在currentTarget属性中指定的HTMLElement。 Mozilla Docs会指出这通常是一个元素。

 [currentTarget: EventTarget & T;] 

T依然未被指定

 interface ReactHTMLElement<T extends HTMLElement> extends DOMElement<HTMLAttributes<T>, T> { 

这似乎支持T是一个元素的想法。 我相信通用的目标是能够访问currentTarget属性上的特定于元素的属性(例如,使用HTMLImageElement src标签等)。 有一个问题表明在核心lib.d.ts中做类似的事情,并讨论涉及的问题。

从我可以告诉的反应types是一个相同的核心思想的实现。