我想知道是否可以根据typescript中的另一个属性将两个属性设置为可选属性,例如:
如果messageundefined我希望ab是必需的,
如果messagenot 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

09-20 23:21