Правильное использование React.Events в TypeScript 2.0?

У меня есть приложение, использующее React и TypeScript. Недавно я обновил определения типов, чтобы использовать @typesпространство имен npm для их хранения в моей node_modulesпапке.

Ранее при работе с DOM событиями такая сигнатура метода удовлетворяла определениям типов:

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

Теперь, однако, я получаю ошибки компилятора:

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

И после поиска в папке определений типа реакции он действительно принимает общий характер:

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

Мой вопрос в основном заключается в том, что является прецедентом для этого общего, как его использовать и какие преимущества он добавляет? Я мог бы просто изменить свой метод:

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

И это удовлетворило бы требованию определения типа. Но каков предполагаемый прецедент?

javascript,node.js,reactjs,typescript,

4

Ответов: 1


3 принят

Из чтения файла response.d.ts, который вы связали, похоже, что этот общий параметр соответствует HTMLElement, указанному в свойстве currentTarget . Mozilla Docs будет означать , что это обычно представляет собой элемент.

[currentTarget: EventTarget & T;]

T остается неопределенным до

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

что, по-видимому, подтверждает идею о том, что T является элементом. Я полагаю, что цель универсального доступа - доступ к свойствам, специфичным для элемента (например, теги src и такие HTMLImageElement, например, использование) в свойстве currentTarget. Существует проблема, которая предлагает сделать что-то подобное в основном lib.d.ts вместе с некоторыми обсуждениями по обсуждаемым вопросам.

Из того, что я могу сказать, реакция ввода - это реализация той же основной идеи.

JavaScript, Node.js, reactjs, машинопись,
Похожие вопросы