typescript - ts(2339) Egenskapen 'ariaLabel' finns inte på typen 'HTMLElement'


Jag har en matris med HTMLElements som alla har en aria-etikett och jag försöker få dessa etiketter med följande kod:

const opponentsPkm = Array.from(
    activeRoom.querySelectorAll<HTMLElement>(".rightbar .picon")
  );
  const names = opponentsPkm.map((x) => x.ariaLabel);

men jag får TypeScript-felet "Property 'ariaLabel' does not exist on type 'HTMLElement'." Eftersom aria-label inte är en obligatorisk egenskap har jag inte kunnat lista ut hur man löser TypeScript-felet. HTML-elementen i arrayen är alla span-element som ser ut så här:

<span class="picon has-tooltip" data-tooltip="pokemon|1|3" aria-label="Landorus (Landorus-Therian) (84%)"></span>

Svar #1

Du bör hämta aria-label via getAttribute-funktionen.

const opponentsPkm = Array.from(activeRoom.querySelectorAll<HTMLElement>(".rightbar .picon"));
const names = opponentsPkm.map((x) => x.getAttribute('aria-label'));