React Redux connect не может быть назначен для типа '() => void' с машинописью - PullRequest
2 голосов
/ 07 октября 2019

все хорошо?

Я запутался в понимании проблемы, используя печатный текст с реакцией, при соединении или редукции с компонентами он представляет эту ошибку и не может понять, проведите некоторое исследование, но ответыдовольно запутанный

Ошибка это:

Argument of type 'typeof Beds' is not assignable to parameter of type 'ComponentType<Matching<{ beds: DataBedsTypes[]; } & typeof import("/Users/keven/Documents/carenet/orquestra-frontend/src/Beds/action"), Props>>'.
  Type 'typeof Beds' is not assignable to type 'ComponentClass<Matching<{ beds: DataBedsTypes[]; } & typeof import("/Users/keven/Documents/carenet/orquestra-frontend/src/Beds/action"), Props>, any>'.
    Types of parameters 'props' and 'props' are incompatible.
      Type 'Matching<{ beds: DataBedsTypes[]; } & typeof import("/Users/keven/Documents/carenet/orquestra-frontend/src/Beds/action"), Props>' is not assignable to type 'Readonly<Props>'.
        Types of property 'loadBeds' are incompatible.
          Type '(data: DataBedsTypes[]) => { type: BedsTypes; payload: DataBedsTypes[]; }' is not assignable to type '() => void'.  TS2345

    46 |   mapStateToProps,
    47 |   mapDispatchToProps,
  > 48 | )(Beds);

Мой компонент

import React, { Component } from 'react';

import { connect } from 'react-redux';
import { bindActionCreators, Dispatch } from 'redux';
import { Row, Col } from 'config/styles';
import { ApplicationState } from 'config/store';
import { DataBedsTypes } from './types';
import * as BedsActions from './action';

import Bed from './Bed';

interface StateProps {
  beds: DataBedsTypes[];
}

interface DispatchProps {
  loadBeds(): void;
}

type Props = StateProps & DispatchProps;

class Beds extends Component<Props> {
  componentWillMount() {
    const { loadBeds } = this.props;
    loadBeds();
  }

  render() {
    const { beds } = this.props;
    return (
      <Row>
        {beds.map((b: DataBedsTypes) => (
          <Col key={b.pid} md={16.666} lg={10}>
            <Bed {...b} />
          </Col>
        ))}
      </Row>
    );
  }
}

const mapStateToProps = (state: ApplicationState) => ({ beds: state.beds.data });
const mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators(BedsActions, dispatch);

export default connect(
  mapStateToProps,
  mapDispatchToProps,
)(Beds);

1 Ответ

0 голосов
/ 07 октября 2019

Ваш интерфейс для DispatchProps неверен. Прямо сейчас вы говорите, что loadBeds имеет тип void. Ваш интерфейс должен быть таким

interface DispatchProps {
  loadBeds: () => void;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...