При вызове redux connect с опциями, но без OwnProps это вызывает проблемы с машинописью, связанные со встроенными реквизитами, такими как ref.Поэтому, если я пытаюсь:
Родительский компонент:
import MyComponent from './MyComponent';
class ParentComponent extends React.Component<Props, {}> {
private placeholder: any;
constructor(props) {
super(props);
}
render() {
<MyComponent ref={(e: any) => { this.placeholder = e; }} />
}
}
Мой компонент:
import { doSomethingAction } from 'actions';
interface State { something?: string; }
interface StateProps { someProp: string; }
interface DispachProps { doSomething: () => void }
type Props = StateProps & DispatchProps;
class MyComponent<Props, State> {
constructor(props) {
super(props);
this.state: State = { someProp: false };
}
render() {
return (<div>this.props.someProp</div>);
}
}
function mapStateToProps(state: Store): StateProps {
return {
someProp: state.somePropState
}
}
function mapDispachToProps(dispach): DispachProps {
return {
doSomething: () => dispach(doSomethingAction())
}
}
// same issue even if third type for OwnProps is added
export default connect<StateProps, DispachProps> (
mapStateToProps,
mapDispachToProps,
null,
{ forwardRef: true }
)(MyComponent)
Я получаю следующую ошибку машинописи для MyComponent:
Тип'{ref: (e: any) => void;} 'отсутствуют следующие свойства из типа «Readonly>»: someProp, doSomething.
Неожиданно он обрабатывает все эти свойства как необходимые собственные свойства.Он выдаст ту же ошибку, даже если регулярно добавляется третий тип для OwnProps.Это ошибка или я что-то упустил.Если это ошибка, то есть ли какой-нибудь элегантный способ преодолеть это, пока она не будет исправлена (я знаю, что могу добавить третий тип для OwnProps как любой, но не думаю, что это такое хорошее решение)?(реагирует на 16.8.0, реагирует на редукцию 6.0.0, @ типы / реагирует на 16.8.2, @ типы / реагирует на редукцию 7.0.1)