You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript如何处理JSX中的`data-*`属性?其类型定义位置在哪?

React中data-*自定义属性的TypeScript类型定义位置

你要找的data-*属性类型支持,并没有以你想象的`data-${string}`模板字符串属性的形式直接定义,而是通过字符串索引签名来实现的,具体位置在@types/react包的类型文件中:

  • 核心定义位于node_modules/@types/react/index.d.ts(或是拆分后的src/dom.ts源文件)里的DOMAttributes<T>接口,该接口被HTMLAttributes<T>继承,几乎所有HTML元素的属性接口都基于HTMLAttributes<T>扩展。
  • DOMAttributes<T>包含一个字符串索引签名,允许任意字符串作为属性名,以此兼容data-*这类自定义属性,大致形式如下:
interface DOMAttributes<T> {
  // ... 其他内置属性定义(如onClick、className等)
  [key: string]: any; // 这个索引签名允许所有自定义属性,包括data-*
}

这种设计是因为data-*的后缀可以是任意字符串,无法提前枚举所有可能的data-*属性,所以用通用的字符串索引来覆盖所有情况,这也是你的示例代码不会触发TypeScript错误的原因。

内容的提问来源于stack exchange,提问作者Aelita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:04:59