假设我想创建一个名为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
)
显然这是行不通的,因为接口不能实现另一个接口,而且IntrinsicElements也没有公开。
这样做的正确方法是什么?
发布于 2018-09-04 19:42:43
您要查找的语法是:
type DivProps = JSX.IntrinsicElements["div"];
interface MyDivProps extends DivProps {
marginX: string;
marginY: string;
}
(TypeScript有一个限制,即接口只能扩展以点分隔的名称,因此您必须先为JSX.IntrinsicElements["div"]
定义一个类型别名,然后才能扩展它。)
https://stackoverflow.com/questions/52172901
复制