반응형
속성 '내부'텍스트'가 '요소' 유형에 없습니다.
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
반응형
'source' 카테고리의 다른 글
JDBC 연결에 대한 네트워크 시간 초과 설정 (0) | 2023.07.01 |
---|---|
레지스터 키워드가 생성된 이유는 무엇입니까? (0) | 2023.07.01 |
쿼리 매개 변수를 @ModelAttribute에 매핑하면 @JsonProperty 이름이 존중되지 않습니다. (0) | 2023.07.01 |
Spring REST, JSON "관리/백 참조 'defaultReference'를 처리할 수 없음" 415 지원되지 않는 미디어 유형 (0) | 2023.07.01 |
Oracle 9 - 테이블 상태와 일치하도록 시퀀스 재설정 (0) | 2023.07.01 |