Правильный ввод для nextElementSibling, чтобы можно было использовать .focus ()? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь перемещать фокус в моей форме программно с помощью nextElementSibling, однако я также использую Typescript и хочу ввести свои переменные / константы ...

У меня был успех без набрав и используя следующее:

myFunct(event) {
  const myEl = event.srcElement;
  const nextElement = myEl.nextElementSibling;

  if (nextElement) {
    nextElement.focus();
  }
}

Однако при использовании типов в коде я получаю несоответствия и следующее предупреждение IntelliJ:

Свойство 'focus' делаетне существует в типе «Элемент»

myFunct(event: KeyboardEvent) {
  const myEl: Element = event.srcElement;
  const nextElement: Element = myEl.nextElementSibling;

  if (nextElement) {
    nextElement.focus();
  }
}

Однако при поиске в Google я считаю, что тип для nextElementSibling должен быть на самом деле Element, в соответствии с Mozilla

Кто-нибудь может помочь?

ОБНОВЛЕНИЕ:

Похоже, что KeyboardEvent на event фактически вызываетвопрос ..

1 Ответ

0 голосов
/ 29 января 2019

С MDN : Элемент наследует свойства от своего родителя Element и реализует свойства из GlobalEventHandlers и TouchEventHandlers.

Следовательно, вы можете изменить свой код на (код, протестированный с typescriptlang.org ):

function myFunct(event: KeyboardEvent) {
  const myEl = <HTMLElement>event.srcElement;
  const nextElement = <HTMLElement>myEl.nextElementSibling;

  if (nextElement) {
    nextElement.focus();
  }
}
...