source

속성 '내부'텍스트'가 '요소' 유형에 없습니다.

lovecheck 2023. 7. 1. 08:59
반응형

속성 '내부'텍스트'가 '요소' 유형에 없습니다.

Puppeteer용 Typetscript를 사용하고 있습니다.요소에서 내부 텍스트를 가져오려고 합니다.

const data = await page.$eval(selector, node => node.innerText);

오류가 발생합니다.

속성 '내부'텍스트'가 '요소' 유형에 없습니다.

저는 이 질문에 설명된 것처럼 HTML 요소에 캐스팅하려고 했습니다: 오류 "속성" 내부'EventTarget' 유형에 '텍스트'가 없습니다. "?

const data = await page.$eval(selector, <HTMLElement>(node: HTMLElement) => node.innerText);

다음과 같이 나만의 인터페이스를 만드는 것도 마찬가지입니다.

interface TextElement extends Element {
    innerText: string;
}

그러나 각각의 경우 이 특정 유형에 innerText가 존재하지 않는다는 오류가 발생합니다.

속성 '내부'텍스트'가 '유형에 없습니다.HTML 요소'

왜 이런 일이 일어나고 어떻게 대처해야 합니까?

다음과 같이 수정할 수 있습니다.

const data = await page.$eval(selector, node => (node as HTMLElement).innerText);

또는:

const data = await page.$eval(selector, node => (<HTMLElement>node).innerText);

업데이트:

그래서, Github에 대한 약간의 교환 후에, 왜 이 질문의 구문이 작동하지 않는지 명확합니다.이것은 실제로 익명의 일반 함수를 정의합니다.

<HTMLElement>(node: HTMLElement) => node.innerText

더 명확한 예는 다음과 같습니다.

function myFunction<T>(node: T) {
    node.innerText; // Property 'innerText' does not exist on 'T'
}

const data = await page.$eval(selector, myFunction);

의 유감스러운 명명T~하듯이HTMLElement혼란을 일으킵니다.

에서 반환된 모든 요소에 대해 이 오류를 수정해야 하는 사용자를 위해querySelector:

const el = document.querySelector<HTMLElement>('#app');

if (el) {
  el.innerText = content;
}

다음 구문을 사용하여 이 문제를 해결했습니다.

const title = (document.querySelector(".someselector") as HTMLHeadingElement)?.innerText;

저는 이슈의 요소를 명시해야 했습니다.질문에 대해서는 HTMLlement와 다른 것을 사용하는 것이 더 나을 수 있습니다.

언급URL : https://stackoverflow.com/questions/57551589/property-innertext-does-not-exist-on-type-element

반응형