首页 > 解决方案 > 除了 HTMLAnchorElement 之外,这个 html 元素的类型是什么

问题描述

我正在尝试获取从 DOM 中选择的锚点的类型,但总是告诉我它不包含锚点的属性,如下载、字符集等

interface myLinkType extends HTMLAnchorElement {}

const myLink: myLinkType(that gives error) = document.getElementById('mylink')

标签: javascripthtmltypescripttagselement

解决方案


为什么 TypeScript 抱怨:

  • getElementById 可以返回锚点以外的其他元素。这就是为什么错误消息是:Type 'HTMLElement | null' is not assignable to type 'HTMLAnchorElement | null'。如果你id="mylink"不小心放了一个按钮,那么该按钮将没有锚属性,如字符集等。错误信息是:Type 'HTMLElement' is missing the following properties from type 'HTMLAnchorElement': charset, coords, download, hreflang, and 21 more..
  • 也不保证 getElementById 能找到一个元素。如果找不到元素,则返回 null。

TypeScript 试图强制您的程序在访问这些属性之前检查 getElementById 是否找到了一个元素,并且该元素实际上是一个锚点。这样做是为了防止运行时错误。

这是可行的,因为它只能返回一个锚元素:

const a: HTMLAnchorElement | null = document.querySelector('a#mylink')


推荐阅读