【发布时间】:2020-07-31 23:11:41
【问题描述】:
我正在构建一个采用结构和值参数的反应组件
interface OptionFieldProps {
structure: { name: string; multi: boolean };
value: string | string[] | undefined;
}
如果 multi 为真,则值为 string[] | undefined 类型,如果其假值为 string | undefined 类型。我尝试使用泛型来显示这种关系...
type FieldValue <T extends { name: string; multi: boolean }> =
T extends { multi: true } ? string[] | undefined : string | undefined
interface OptionFieldProps <T extends { name: string; multi: boolean }> {
structure: T;
value: FieldValue<T>;
}
但是当我将它传递给组件时,它说值的类型始终是string | undefined
class OptionField extends Component<OptionFieldProps<{ name: string; multi: boolean }>>{
render(){
const { structure, value } = this.props
//value: string | undefined
}
}
我应该怎么写才能让打字稿理解这种关系?
【问题讨论】:
标签: reactjs typescript typescript-generics tsx