Typescript throws "не может быть назначен типу IntrinsicAttributes & {children ?: ReactNode;}" - PullRequest
0 голосов
/ 28 мая 2020

Я знаю, что это подробно обсуждалось, но другие решения SO, похоже, не работают, или я не могу их реализовать.

Я новичок в машинописном тексте и имею следующее:

import faker from "faker";
import React from "react";
import Index from "../components/Index";
import List from "../components/List";

interface Props {
  departments: [
    {
      id: number;
      name: string;
    }
  ];
}

const IndexPage: React.FunctionComponent<Props> = ({ departments }) => {
  return (
    <>
      <Index />
      <List departments={departments} />
    </>
  );
};

export async function getStaticProps() {
  let departments: { id: number; name: string }[] = [];

  for (let i = 0; i < 50; i += 1) {
    const name: string = await faker.company.companyName();
    departments = [...departments, { id: i, name }];
  }

  return {
    props: {
      departments,
    },
  };
}

export default IndexPage;

Хотя я не уверен, что даже правильно реализовал TypeScript, компилятор выдает эту ошибку:

Type '{ departments: [{ id: number; name: string; }]; }' is not assignable to type 'IntrinsicAttributes & { children?: ReactNode; }'. Property 'departments' does not exist on type 'IntrinsicAttributes & { children?: ReactNode; }'.

Компилятор подчеркивает опору отделов в компоненте <List>.

Почему возникает эта ошибка и как ее исправить?

1 Ответ

0 голосов
/ 28 мая 2020

Typescript пытается сообщить вам, что вы пытаетесь передать свойство departments объекту (в данном случае компоненту React), который не имеет этого свойства в своем типе.

Тип 'IntrinsicAttributes & { children?: ReactNode; }' - это просто типизация по умолчанию для компонента реакции; при условии, что departments не включен в реквизиты этого типа (и это не так), вы не можете передать эту опору в компонент List.

Чтобы исправить это, вам просто нужно добавить departments к определению props List

...