HTMLDivElement 是什么?常见的DOM类型【前端TS】

不要因为害怕失败,而放弃你原本可以做到的事情。

HTMLDivElement 是什么?

  • 它是 TypeScript 内置的 DOM 类型(TS 的 lib.dom.d.ts 里定义的)。
  • 对应的就是 HTML 里的 <div> 元素。
  • 浏览器在运行时会把 <div> 解析成一个 DOM 对象,在 TS 类型里就是 HTMLDivElement

换句话说:

const div = document.createElement("div");
// TS 会自动推断 div: HTMLDivElement

常见的 DOM 类型:

TS 给所有 HTML 标签都提供了对应的类型:

  • <div>HTMLDivElement
  • <span>HTMLSpanElement
  • <input>HTMLInputElement
  • <form>HTMLFormElement
  • <canvas>HTMLCanvasElement
  • <video>HTMLVideoElement
  • 通用的元素(比如没法确定标签类型) → HTMLElement
  • 更顶层 → Element
## 具体关系
Element → HTMLElement → HTMLDivElement(具体元素)

在 Vue3 + TS 里常用场景:

例子 1:模板里的 ref

<template>
  <div ref="box"></div>
</template>

<script setup lang="ts">
import { ref, onMounted } from "vue";

const box = ref<HTMLDivElement | null>(null);

onMounted(() => {
  if (box.value) {
    box.value.style.background = "red"; // TS 会识别出 style 属性
  }
});
</script>

ref<HTMLDivElement | null> 就告诉 TS:box.value 是一个 <div> 元素。

例子 2:获取 input

<template>
  <input ref="inputRef" />
</template>

<script setup lang="ts">
import { ref, onMounted } from "vue";

const inputRef = ref<HTMLInputElement | null>(null);

onMounted(() => {
  inputRef.value?.focus(); // TS 知道 input 有 focus()
});
</script>

如果写成 ref<HTMLElement | null>,就没有 focus() 方法提示,因为 HTMLElement 不一定有这个方法。

例子 3:事件对象里的类型

const handleInput = (e: Event) => {
  const target = e.target as HTMLInputElement;
  console.log(target.value);
};
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值