Next.JS, Typescript withRouter: «Тип ... нельзя назначить для типа« IntrinsicAttributes & Pick <> '»в React - PullRequest
1 голос
/ 13 июня 2019

Я новичок в TypeScript, и в настоящее время я настраиваю приложение React с помощью Next.js, Redux, Jest и т. Д. Однако при запуске приложения появляется ошибка типа, которая останавливает приложение.

Кажется, проблема заключается в том, что я пропускаю подпорки. Этот компонент оборачивается компонентом 'withRouter' HOC, который возвращает тот же компонент с информацией о маршруте, т.е. {router: {pathname: /}}

Мой компонент (Logo.tsx)

import React, { SFC } from 'react';
import { withRouter, WithRouterProps } from 'next/router';
import LogoStyled from './Logo.styled';

interface LogoProps {
    router: { pathname: string };
}

const Logo: SFC<LogoProps & WithRouterProps> = ({ router }) => {
    const { pathname } = router;
    return pathname === '/' ? (
        <LogoStyled>Home</LogoStyled>
    ) : (
        <LogoStyled>Not Home</LogoStyled>
    );
};

export default withRouter(Logo);

My Jest Test (Logo.test.tsx)

import React from 'react';
import { shallowToJson } from 'enzyme-to-json';
import 'jest-styled-components';
import { shallowWithTheme, mountWithTheme } from '../../../tests/testHelpers';

import Logo from './Logo';

const home = { pathname: '/' };
const about = { pathname: '/about' };

describe('Logo', () => {
    it('should render correctly', () => {
        const element = shallowWithTheme(<Logo router={home} />);
        expect(shallowToJson(element)).toMatchSnapshot();
    });
    it(`should display 'Home' for homepage`, () => {
        const element = mountWithTheme(<Logo router={home} />);
        expect(element.text()).toBe('Home');
    });
    it(`should display 'Not Home' for homepage`, () => {
        const element = mountWithTheme(<Logo router={about} />);
        expect(element.text()).toBe('Not Home');
    });
});

Результаты с ошибкой:

components/atoms/Logo/Logo.test.tsx:13:43 -
error TS2322: Type '{ router: { pathname: string; }; }'
is not assignable to type 'IntrinsicAttributes & Pick<LogoProps &
 WithRouterProps<Record<string, string | string[]>>, never> & { children?: ReactNode; }'.

Property 'router' does not exist on type 'IntrinsicAttributes &
Pick<LogoProps & WithRouterProps<Record<string, string | string[]>>,
never> & { children?: ReactNode; }'.

Я предполагаю, что это довольно очевидная вещь, которую я упускаю, но сейчас я изо всех сил пытаюсь разобраться в этом. Спасибо за любую помощь, которую вы можете оказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...