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

在ReactJS+TypeScript环境中如何为<button>标签添加额外自定义Props

报错原因

TypeScript 会对原生HTML元素的属性做静态类型校验,只有内置在类型定义中的属性才会被识别。aria-current虽然是WAI-ARIA标准属性,如果你使用的类型定义包版本较低,或者项目没有引入完整的ARIA类型定义,就会触发该报错。

解决方案

  • 升级类型定义包(优先推荐)
    如果是React项目,绝大多数情况下升级@types/react和@types/react-dom到最新版本即可解决,新版本已经内置了aria-current的类型支持:
npm install @types/react@latest @types/react-dom@latest --save-dev

如果是原生TypeScript项目,升级typescript到最新正式版即可。

  • 手动扩展类型定义
    如果不想升级依赖,你可以在项目的全局类型声明文件(通常是src/global.d.ts、typings.d.ts或者React项目自带的src/react-app-env.d.ts)中添加类型扩展:
    • React项目扩展写法:
import 'react';

declare module 'react' {
  interface ButtonHTMLAttributes<T> {
    'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | boolean;
  }
}
  • 原生TS项目扩展写法:
interface HTMLButtonElement {
  'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | boolean;
}

添加完成后重启TS服务,报错就会消失。

  • 临时类型断言(仅适合临时使用)
    如果只是单次使用不想修改全局配置,可以用类型断言绕开校验:
// React场景示例
<button {...({ 'aria-current': 'page' } as React.ButtonHTMLAttributes<HTMLButtonElement>)}>
  首页
</button>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:24:04