Как исправить 'Свойство "string" не существует при ошибке типа "object" в Typescript - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь реализовать Восстановление прокрутки в React Router с использованием Typescript с кодом ниже.

import { Component } from 'react';

import { withRouter } from "react-router-dom";

export interface IProps {
  prevProps?: any;
  location: object;
  pathname?: any;
}

class ScrollToTop extends Component<IProps, object> {

  componentDidUpdate(prevProps?: any) {
    if (this.props.location.pathname !== prevProps.location.pathname) {
      window.scrollTo(0, 0);
    }
  }

  render() {

    return this.props.children;

  }

}

export default withRouter(ScrollToTop);

Однако я продолжаю получать следующую ошибку TS при добавлении типов дляместоположение и путь.

(14,29): Property 'pathname' does not exist on type 'object'.

Почему мой код неверен?

1 Ответ

1 голос
/ 20 апреля 2019

Как упоминалось в другом ответе, withRouter должен быть импортирован из react-router.

Но чтобы ответить на ваш вопрос об ошибке Typescript, это потому, что location был определен как object для машинописи без указания свойств.Вот почему возникает ошибка при попытке доступа к pathname на нем.

К счастью, вам не нужно выписывать все свойства на объекте проп.Вместо этого вы можете установить типы реагирующих маршрутизаторов с помощью:

npm install --save @types/react-router @types/react-router-dom

При создании компонента, который наследует эти реквизиты (соответствие, местоположение, история), просто расширьте RouteComponentProps:

import { RouteComponentProps } from "react-router";

interface IProps extends RouteComponentProps {
  // other props
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...