首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在TypeScript/JSX中向现有的HTML元素添加属性?

如何在TypeScript/JSX中向现有的HTML元素添加属性?
EN

Stack Overflow用户
提问于 2016-10-17 18:55:08
回答 7查看 34.5K关注 0票数 33

有人知道如何使用自定义属性正确地添加/扩展所有本机HTML元素属性吗?

有了用于合并接口的TypeScript文档,我想我可以这么做:

代码语言:javascript
运行
复制
interface HTMLElement {
    block?: BEM.Block;
    element?: BEM.Element;
    modifiers?: BEM.Modifiers;
}

<div block="foo" />; // error

但是,我在vscode 1.6.1 (最新)中得到以下Intellisense错误:

类型'HTMLProps‘上不存在ts属性’块‘。

他们所指的HTMLPropsReact.HTMLProps<T>div元素声明如下所示:

代码语言:javascript
运行
复制
namespace JSX {
    interface IntrinsicElements {
        div: React.HTMLProps<HTMLDivElement>
    }
}

我试图重新声明div,但没有结果。

相关:https://github.com/Microsoft/TypeScript/issues/11684

编辑:,这是最后为我工作的东西:

代码语言:javascript
运行
复制
declare module 'react' {
    interface HTMLAttributes<T> extends DOMAttributes<T> {
        block?: string
        element?: string
        modifiers?: Modifiers // <-- custom interface
    }
}
EN

Stack Overflow用户

发布于 2019-05-13 09:50:06

最新的例子(2019年5月)

React定义文件(默认情况下是index.d.ts,当使用create-react-app时)包含所有标准HTML元素的列表,以及已知的属性。

为了允许自定义HTML属性,您需要定义它的类型。通过扩展HTMLAttributes接口来做到这一点:

代码语言:javascript
运行
复制
declare module 'react' {
  interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes<T> {
    // extends React's HTMLAttributes
    custom?: string;
  }
}
票数 2
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40093655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档