Ошибка объединения TypeScript при вставке строки в объект? - PullRequest
1 голос
/ 27 мая 2020

У меня есть компонент с этими реквизитами:

type Props = {
  items: {
    text: string;
    status?: "processing" | "error" | "info-required";
  }[];
};

const Component: React.FC<Props> = ({ items }) => 

Когда я использую компонент и устанавливаю встроенные реквизиты, он отлично работает:

<Component
    items={[
      { text: "a" },
      { text: "b" },
      { text: "c", status: "processing" }
    ]}
  />

Однако, когда я помещаю реквизиты в объект с ошибками:

const items = [
  { text: "a" },
  { text: "b" },
  { text: "c", status: "processing" }
]

<Component items={items} />

Типы свойства status несовместимы. Тип «строка» не может быть присвоен типу «ошибка» | «обработка» | "info-required" '.

Ожидаемый тип происходит из свойства' items ', которое здесь объявлено в типе' IntrinsicAttributes & Props & {children ?: ReactNode; } '

1 Ответ

1 голос
/ 27 мая 2020

Дело в том, что, поскольку вы не определили тип const items, машинописный текст не уверен, что status всегда будет содержать что-то совместимое с типом "processing" | "error" | "info-required".

Например, вы может сделать, items[2].status = 'invalid text';

Вы должны обеспечить тип items, например: const items: Props['items']


enter image description here

enter image description here

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