Кукольник / Typescript: Как я могу привести к Element в функции eval $ page? - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь прочитать значение атрибута в кукловоде:

const value = attribute && await page.$eval(selector, (node: Element, name: string) => {
    return node.getAttribute(name)
}, attribute.name);

, что приводит к ошибке

TS2339: свойство 'getAttribute' не существует для элемента типа 'Элемент '.

Когда я разыгрываю

узел: любой

вместо узла: Элемент, он отлично работает.

Причина этого заключается в том, что React перегружает тип как

Элемент интерфейса {}

в node_modules/@types/react/gloabal.d.ts

Как я могу привести к стандартному Элементу?

1 Ответ

1 голос
/ 02 апреля 2020

Возможно, вам не хватает dom lib из вашего tsconfig.json. Добавьте его следующим образом:

"lib": [
    "dom",
    "es2018"
],

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

interface Element {
    getAttribute(name: string): string;
}

С этим Вы можете расширять произвольный тип по своему усмотрению.

...