代码之家  ›  专栏  ›  技术社区  ›  Yichz

Typescript如何扩展本机HTML元素?

  •  2
  • Yichz  · 技术社区  · 7 年前

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

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

    HTMLDivElement ,所以我想要的是:

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

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

    1 回复  |  直到 7 年前
        1
  •  7
  •   Matt McCutchen    7 年前

    您要查找的语法是:

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

    (TypeScript有一个限制,接口只能扩展虚线名称,因此必须为其定义类型别名 JSX.IntrinsicElements["div"] 在扩展之前。)

    推荐文章