Reactjs 属性子项是否将被覆盖?

Reactjs 属性子项是否将被覆盖?,reactjs,typescript,Reactjs,Typescript,我有以下反应组件: export default function ElevationScroll({children}: PropsWithChildren<{ children: ReactElement }>) { const trigger = useScrollTrigger({ disableHysteresis: true, threshold: 0 }); return React.cloneElement

我有以下反应组件:

export default function ElevationScroll({children}: PropsWithChildren<{ children: ReactElement }>) {

    const trigger = useScrollTrigger({
        disableHysteresis: true,
        threshold: 0
    });


    return React.cloneElement(children, {
        elevation: trigger ? 3 : 0,
    });
}
在component参数中,我将
{children:ReactElement}
作为泛型类型传递,该泛型类型扩展为:

type PropsWithChildren<{ children: ReactElement }> = { children: ReactElement } & { children?: ReactNode };
type-PropsWithChildren={children:ReactElement}&{children?:ReactNode};

为什么允许定义属性
子属性两次

提醒:
{a:string}&{a:number}
结果类型
从不

type PropsWithChildren<{ children: ReactElement }> = { children: ReactElement } & { children?: ReactNode };
type Prop<P> = P & { a: number };

// {a: string} & { a: number } = never
const bad: Prop<{a:string}> = {a: '5'} // Type 'string' is not assignable to type 'never'
// { a: Number } & { a: number } 
const obj: Prop<{a:Number}> = {a: 5} // GOOD
type ReactNode = ReactChild | ReactFragment | ReactPortal | boolean | null | undefined;
type ReactChild = ReactElement | ReactText;

// Therefore
type ReactNode = ReactElement | ....