javascript - 除了 HTMLAnchorElement 之外,这个 html 元素的类型是什么
问题描述
我正在尝试获取从 DOM 中选择的锚点的类型,但总是告诉我它不包含锚点的属性,如下载、字符集等
interface myLinkType extends HTMLAnchorElement {}
const myLink: myLinkType(that gives error) = document.getElementById('mylink')
解决方案
为什么 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')
推荐阅读
- magento - Magento 2 - 可配置的产品价格
- ansible - 如何获取 Ansible playbook 中使用的变量列表?
- vue.js - 无法从对象列表Vuejs生成数据
- node.js - 卡在 mongoDB 中让 $lookup
- xamarin.android - َAndroid:右键单击鼠标左键打开上下文菜单并且不关闭
- typescript - 在运行时区分泛型类型的可能性的最佳方法是什么?
- javascript - 安装反应应用程序时出现问题
- python - 为什么我的损失函数总是返回 nan?
- java - 由于某种原因,我无法访问从另一个类派生的类的方法
- sql - 将空字符串从 Excel 插入 SQL(int)