Свойство 'name' не существует для типа 'EventTarget' - React + TypeScript - PullRequest
0 голосов
/ 28 марта 2019

это мой код:

<Button
  disabled={filter === 'Active'}
  size='md'
  color='primary'
  name='Active' // complete = false
  onClick={this.handleFilterClick}
>
  Active
</Button>

в моем обработчике функций я получаю сообщение об ошибке:

handleFilterClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
    // continue here
     const { name } = e.target;

он говорит:

Property 'name' does not exist on type 'EventTarget'.

Iтакже пробовал:

(e:  React.MouseEvent<HTMLInputElement, MouseEvent> &  React.MouseEvent<HTMLButtonElement, MouseEvent>) 

каков тип события для кнопки?в javascript это работает, он может принимать имя, но я не знаю, почему не машинопись?

1 Ответ

1 голос
/ 28 марта 2019

event.target - это элемент, из которого отправляется элемент, который необязательно должен быть HTMLButtonElement, определенным в событии.

Однако, если вы используете event.currentTarget, вы увидите, что эта ошибка исчезнет:

const { name } = event.currentTarget;

Если вам нужно использовать event.target, вам придется разыграть объект:

const { name } = event.target as HTMLButtonElement;

Из набора:

/**
  * currentTarget - a reference to the element on which the event listener is registered.
  *
  * target - a reference to the element from which the event was originally dispatched.
  * This might be a child element to the element on which the event listener is registered.
  * If you thought this should be `EventTarget & T`, see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/12239
*/
...