при использовании event.target он работает на сайте, но в коде есть ошибка - PullRequest
0 голосов
/ 23 апреля 2019

С помощью javascript я проверяю, щелкает ли пользователь внутри 2 делений с помощью event.target, он работает, но в коде выдает это сообщение об ошибке:

Аргумент типа 'EventTarget | null 'нельзя назначить параметру типа' Node | ноль'. Типу «EventTarget» не хватает следующих свойств из типа «Node»: baseURI, childNodes, firstChild, isConnected и еще 44. Vetur (2345)

cogsClose() {
    if (
      !document.querySelector(".cogs-window")!.contains(event.target)! &&
      !document.querySelector(".fa-cogs")!.contains(event.target)
    ) {
      document.getElementById("cogs-user")!.classList.add("cogs-hide");
      document.getElementById("cogs-tabs")!.classList.add("cogs-hide");
    }
  }

Ошибка отображается в обоих событиях. Цель.

1 Ответ

0 голосов
/ 23 апреля 2019

Давайте посмотрим, что lib.dom.d.ts говорит об этом. Таким образом, сигнатура содержит функции выглядит так:

contains(other: Node | null): boolean;

и введите для свойства mouseEvent значение

readonly target: EventTarget | null;

EventTarget не совместим с Node. Это потому, что target не обязательно должен быть всегда Node-типом, как указано в doc . Но если вы уверены в наборе текста, вы можете просто передать это право на Node, HTMLElement или что-то в этом роде.

.contains(<Node>(event!.target))

Но будьте осторожны ... Типы здесь, чтобы защитить нас, поэтому подпись выглядит так по какой-то причине. То же самое для использования! везде ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...