我有一个带有泛型的类型,用于为函数组件定义一些额外的选项.
type FCWithOptions<T> = React.FC<{options?: T}>;
个
使用此类型,我定义了一些具有其自己的额外属性的组件
interface ComponentAOptions {
option1: string;
option2: number;
}
interface ComponentBOptions {
prop1: boolean;
prop2: Record<string, string>;
}
type ComponentAFC = FCWithOptions<ComponentAOptions>
type ComponentBFC = FCWithOptions<ComponentBOptions>
const ComponentA: ComponentAFC = ({options}) => {
return <>Component A</>
}
const ComponentB: ComponentBFC = ({options}) => {
return <>Component B</>
}
然后,我需要使用一组接口在容器组件中传递这些组件,该接口数组包含要传递的组件和该组件的自定义选项(通过属性).
interface ComponentValue<T>{
component: FCWithOptions<T>;
componentOptions?: T;
}
interface MainComponentProps<C>{
components: ComponentValue<C>[]
}
function MainComponent<C>({}: MainComponentProps<C>) {
return <>Main</>
}
我应该能做的事情是这样的:
<MainComponent components={[
{component: ComponentA, componentOptions: {option1: "", option2: 2}},
{component: ComponentB, componentOptions: { prop1: true, props: {} }}
]} />
但是它只对数组的第一个元素起作用,如果我添加其他元素,我会得到一些类型脚本断言
我怎么才能做到这一点呢? 谢谢