Javascript Typescript-动态扩展接口
我正在尝试使用以下道具键入现有的React本机模块:Javascript Typescript-动态扩展接口,javascript,reactjs,typescript,react-native,Javascript,Reactjs,Typescript,React Native,我正在尝试使用以下道具键入现有的React本机模块: useComponent1: boolean useComponent2: boolean 通过以下实现 render(){ if(useComponent1){ return <Component1 {...props}/> } if(useComponent2){ return <Component2 {...props}/> } } rende
useComponent1: boolean
useComponent2: boolean
通过以下实现
render(){
if(useComponent1){
return <Component1 {...props}/>
}
if(useComponent2){
return <Component2 {...props}/>
}
}
render(){
如果(使用组件1){
返回
}
如果(使用组件2){
返回
}
}
我有一个组件1和2的接口,但是,我不能同时扩展这两个接口,因为道具取决于使用哪个组件
可以动态扩展接口吗
如果没有,是否有其他解决方案?可能存在交叉点/联合类型:
interface Component1Props { .... }
interface Component2Props { .... }
interface WrapperOwnProps {
useComponent1: boolean
useComponent2: boolean
}
type WrapperProps = WrapperOwnProps & (Component1Props | Component2Props);
道具类型可以另外断言:
class Wrapper extends Component<WrapperProps> {
render(){
const { useComponent1, useComponent2, ...props } = this.props;
if(useComponent1){
return <Component1 {...props as Component1Props}/>
}
if(useComponent2){
return <Component2 {...props as Component2Props}/>
}
}
}
类包装器扩展组件{
render(){
const{useComponent1,useComponent2,…props}=this.props;
如果(使用组件1){
返回
}
如果(使用组件2){
返回
}
}
}