gpt4 book ai didi

reactjs - Typescript 如何扩展原生 HTML 元素?

转载 作者:搜寻专家 更新时间:2023-10-30 21:21:51 24 4
gpt4 key购买 nike

假设我想创建一个名为 MyDiv 的自定义 div 组件,并带有附加属性,例如。

interface MyDivProps {
marginX: string;
marginY: string;
}

但我仍然希望对常规 HTMLDivElement 进行所有类型检查,所以我想要的实际上是这样的:

interface MyDivProps implements JSX.IntrinsicElement.div {
marginX: string;
marginY: string;
}

(我使用 JSX.IntrinsicElement.div 而不是 HTMLDivElement 因为它有额外的 React div 属性,例如 ref)

显然这行不通,因为接口(interface)不能实现另一个接口(interface),而且 IntrinsicElements 也没有公开。

执行此操作的正确方法是什么?

最佳答案

您正在寻找的语法是:

type DivProps = JSX.IntrinsicElements["div"];
interface MyDivProps extends DivProps {
marginX: string;
marginY: string;
}

(TypeScript 有一个限制,一个接口(interface)只能扩展一个带点的名称,所以你必须在扩展它之前为 JSX.IntrinsicElements["div"] 定义一个类型别名。)

关于reactjs - Typescript 如何扩展原生 HTML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52172901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com