我的组件界面
interface InputProps {
value?:string,
onChange?: (event: React.SyntheticEvent<HTMLInputElement>, data: string) => void;
}
我想编写包含P和WrappedFieldProps
所有道具的泛型类型interface FormComponent<P> extends WrappedFieldProps {
// props from P
// props from WrappedFieldProps
}
/*
// import { WrappedFieldProps } from 'redux-form'
interface WrappedFieldProps {
input: WrappedFieldInputProps;
meta: WrappedFieldMetaProps;
}
*/
并在通用函数shouldComponentUpdate
中使用它export function shouldFormFieldUpdate<P>(props: FormComponentProps<P>, nextProps: FormComponentProps<P>): boolean {
const { input: { value }, meta: { valid, touched, error }, ...rest } = props;
let result;
// compare logic
return result;
}
但是我在rest变量上遇到了ts错误:rest类型只能从对象类型中创建
答案 0 :(得分:1)
您可以为此
定义交叉点类型type FormComponent<P> = P & WrappedFieldProps ;
export function shouldFormFieldUpdate<P>(props: FormComponent<P>, nextProps: FormComponent<P>): boolean {
const { input: { value }, meta: { valid, touched, error } } = props;
let result;
// compare logic
return result;
}
上述代码的限制是您无法使用...rest
。这是当前的limitation