请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

ButtonProps 是否可以设置为button和a的联合类型?

图片描述

老师好,
既然Button组件,要么是button 要么是a, 那么ButtonProps是不是可以设置为联合类型呢? 如下所示:

export type ButtonProps = NativeButtonProps | AnchorButtonProps

正在回答

1回答

同学你好

这个场景下使用联合类型确实是更好的选项,甚至你可以使用一个类型收窄的方法让组件更加完美:

function isAnchorButton(props: ButtonProps): props is AnchorButtonProps {
    return 'href' in props;
}

const Button = (props: ButtonProps) => {
    if (isAnchorButton(props)) {
        // 这里 TypeScript 能够准确推断出 props 的类型是 AnchorButtonProps
        return <a href={props.href}>{props.children}</a>
    }
    // 这里会被推断为 NativeButtonProps
    return <button type={props.type}>{props.children}</button>
}


0 回复 有任何疑惑可以回复我~
  • 提问者 李允鹰 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2024-12-14 21:24:17
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号