繁体   English   中英

如何使用TypeScript根据另一个属性将React组件的两个属性设置为可选属性?

[英]How to set two properties for a React component as optional depending on another property using TypeScript?

我想知道是否可以根据TypeScript中的另一个属性将两个属性设置为可选属性,例如:

如果message undefined我希望ab是必需的;如果message not undefined我希望ab是可选的。

如何执行此条件?

type Props = Readonly<{
  message?: React.ReactNode
  a: React.ReactNode
  b: React.ReactNode
}>

const Component = ({ message, a, b}: Props) => <div >

您可以使用联合类型来实现此效果:

type Props = Readonly<{
    message?: undefined
    a: string
    b: string
} | {
    message: string
    a?: string
    b?: string
}>

const Component = ({ message, a, b}: Props) => <div />;

let c = <Component message="" /> //ok 
let c2 = <Component a="" b="" /> //ok
let c3 = <Component message="" b="" /> //ok 
let c4 = <Component /> //error as expected

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM