将扩展类型道具扩展到Typescript界面
我有以下接口:将扩展类型道具扩展到Typescript界面,typescript,typescript-typings,typescript-generics,Typescript,Typescript Typings,Typescript Generics,我有以下接口: 界面按钮操作{ 名称:字符串; } 界面图标按钮道具{ 名称:字符串; 图标:字符串; }如果使用何种TS实体(类型或接口)没有意义,则可以将其键入类型而不是接口: type MyGenericComponentProps<T> = { component: React.FC<T>; } & { [key in keyof T]: T[key]; } 类型MyGenericComponentProps={ 成分:React.FC; }
界面按钮操作{
名称:字符串;
}
界面图标按钮道具{
名称:字符串;
图标:字符串;
}
如果使用何种TS实体(类型或接口)没有意义,则可以将其键入类型而不是接口:
type MyGenericComponentProps<T> = {
component: React.FC<T>;
} & {
[key in keyof T]: T[key];
}
类型MyGenericComponentProps={
成分:React.FC;
} & {
[key in keyof T]:T[key];
}
[更新]:
您需要修改甚至简化一些片段:
type MyGenericComponentProps<T> = {
component: React.FC<T>;
props: T;
}
const MyGenericComponent = <T extends object>({component: Component, props}: MyGenericComponentProps<T>) => {
// ... more code here
return <Component {...props}/>;
};
类型MyGenericComponentProps={
成分:React.FC;
道具:T;
}
常量MyGenericComponent=({component:component,props}:MyGenericComponentProps)=>{
//…这里有更多代码
返回;
};
及
接口MyGenericComponentProps{
成分:React.FC;
}
不知道react,但使用typescript可以扩展接口和声明可选属性。那么这将接受按钮按钮和图标按钮道具谢谢。问题是,在尝试实现
MyGenericComponent
之后,我得到了以下错误:类型“Pick”不可分配给类型“intrinsicatAttributes&T&{children?:ReactNode;}”。类型“Pick”不可分配给类型“T”“Pick”可分配给类型为“T”的约束,但“T”可以用约束“MyGenericComponentProps”的不同子类型实例化。ts(2322)仅供参考,我试图在MyGenericComponent
中执行的操作是let Component=Component
然后
,由此我得到上述错误。请,演示如何定义MyGenericComponent
。我刚刚更新了问题以共享完整的定义。提前谢谢。谢谢,但是这样我就没有道具作为接口属性本身的一部分了。我不想在props
对象中传递道具,而是直接传递。
interface ButtonProps {
name: string;
}
interface IconButtonProps extends ButtonProps{
icon?: string;
}
interface MyGenericComponentProps<IconButtonProps>{
component: React.FC<IconButtonProps>;
}