Javascript 在子道具上指定onClick时出错

Javascript 在子道具上指定onClick时出错,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我在那里 考虑到这两个组成部分: const Link: React.FC<{ clicked?: () => {}; Icon: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>; children: string; }> = ({ Icon, children, clicked }) => { return ( <div className='

我在那里

考虑到这两个组成部分:


const Link: React.FC<{
    clicked?: () => {};
    Icon: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>;
    children: string;
}> = ({ Icon, children, clicked }) => {
    return (
        <div className='sidebarLink' onClick={clicked}>
            <Icon />
            <p>{children}</p>
        </div>
    );
};

const Navbar: React.FC<INavbar> = ({ setPage }) => {
    return (
        <nav className='sidebarOptions'>
            <section>
                <Link Icon={GamesIcon}>Better Games</Link>
                <Link Icon={HomeIcon}>Home</Link>
                <Link Icon={StoreIcon}>Store</Link>
                <Link Icon={DashboardIcon} onClick={() => setPage('library')}>
                    Library
                </Link>
                <Link Icon={PeopleAltIcon}>Friends</Link>
                <Link Icon={EmojiEmotionsIcon}>Unreal Engine</Link>
            </section>

            <section className='section2'>
                <p>Downloads</p>
                <p>Settings</p>
                <p>user</p>
            </section>
        </nav>
    );
};

常量链接:React.FC{};
图标:可覆盖组件;
儿童:弦;
}>=({Icon,children,clicked})=>{
返回(
{儿童}

); }; 常量导航栏:React.FC=({setPage})=>{ 返回( 更好的游戏 家 商场 setPage('library')}> 图书馆 朋友 虚幻引擎 下载

背景

使用者

); };
我得到这个错误:

类型“{children:string;Icon:OverridableComponent;onClick:()=>void;}”不可分配给类型“IntrinsicAttributes&{clicked:(()=>{})|未定义;Icon:OverridableComponent;children:string;}&{……}”。 属性“onClick”不存在于类型“IntrinsicattAttributes&{clicked:(()=>{})|未定义;图标:OverridableComponent;子项:string;}&{…}”。ts(2322)

“单击”的正确类型是什么


注意。

链接
组件需要一个名为
单击
,而不是
单击
的道具-重命名它

<Link Icon={DashboardIcon} clicked={() => setPage('library')}>
    Library
</Link>

无论如何,如果
setPage
确实返回了某些内容,请将空白更改为它返回的内容。

Link
组件需要一个名为
clicked
的道具,而不是
onClick
-重命名它

<Link Icon={DashboardIcon} clicked={() => setPage('library')}>
    Library
</Link>

无论如何,如果
setPage
确实返回了某些内容,请将空白更改为返回的内容。

哦,我的错。我不知不觉地完成了。无论如何这样指定可以吗?是不是太遗传了?@nishi你是说普通的?不,这样申报道具没关系。你可以随意调用你的道具。我指的是通用的,因为你也可以调用clicked?:函数。但这并不是一点描述性的,也可能导致问题。@nishi函数不是泛型函数,您可能无法键入函数返回的内容。void的定义实际上非常具体。它说“这是一个不带参数也不返回任何内容的函数”。而
Function
只是说“这是一个函数”。您无法将需要参数的函数分配给void()=>哦,糟糕。我不知不觉地完成了。无论如何这样指定可以吗?是不是太遗传了?@nishi你是说普通的?不,这样申报道具没关系。你可以随意调用你的道具。我指的是通用的,因为你也可以调用clicked?:函数。但这并不是一点描述性的,也可能导致问题。@nishi函数不是泛型函数,您可能无法键入函数返回的内容。void的定义实际上非常具体。它说“这是一个不带参数也不返回任何内容的函数”。而
Function
只是说“这是一个函数”。无法将需要参数的函数分配给
()=>void