我有一个react组件,它有两个道具required
和fallback
,它的道具的类型定义如下:
type Props =
| {
required? : true | undefined,
fallback : React.ReactNode
}
| {
required? : false,
fallback? : React.ReactNode
}
我的意图是使fallback
需要,如果required
prop是true
或undefined
,它适用于required = true
,但不适用required = undefined
。
<FancyComponent required={true} /> //typescript gives error for this, which is what I expect
<FancyComponent /> //here required is undefined but typescript does not gives any error.
在required
之后的问号(?
)意味着它是一个可选的道具,这意味着两个类型都匹配undefined
的情况。在错误的情况下,您应该删除required
后面的?
s:
type Props =
| {
required?: true,
fallback: React.ReactNode
}
| {
required: false,
fallback?: React.ReactNode
}