在 TypeScript中扩展HTML元素的属性

24,464次阅读
没有评论

共计 4328 个字符,预计需要花费 11 分钟才能阅读完成。

在我参与过的大多数大型应用程序和项目中,我经常发现自己构建了一堆组件,这些组件实际上是标准 HTML 元素之上的超集或抽象。一些示例包括自定义按钮元素,这些元素可能采用一个 prop 来定义该按钮是否应该是主按钮或辅助按钮,或者可能指示它将调用危险操作,例如从数据库中删除或删除项目。除了我想添加的道具之外,我仍然希望我的按钮具有按钮的所有属性。

另一个常见的情况是,我最终将创建一个允许我同时定义标签和输入字段的组件。我不想重新添加元素所 具有的所有属性。我希望我的自定义组件的行为就像输入字段一样,但也采用一个字符串作为标签,并自动连接 htmlFor 上的 prop以与 id 上的相对应

在 JavaScript 中,我可以将 {…props} 任何 props 传递给底层 HTML 元素。这在 TypeScript 中可能有点棘手,我需要显式定义组件将接受哪些 props。虽然对组件接受的确切类型进行细粒度控制很好,但必须手动为每个属性添加类型信息可能很乏味。

在某些情况下,我需要一个可适应的组件,例如

,它可以根据当前主题更改样式。例如,也许我想根据用户是否手动启用 UI 的浅色或深色模式来定义应使用哪些样式。我不想为每个块元素(例如

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计4328字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)