TypeScript: как решить ошибку «свойство не существует для типа» для массивов? - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в TypeScript / React. Я получаю следующее сообщение об ошибке при попытке передать реквизиты как массив компоненту.

Я вызываю компонент как таковой:

return <ContactInfoBlock contactInfo={contact} />;

где contact - массив информации, например:

const contact = {
  contactName: 'Jim',
  contactAvatar: 'jim.png',
  contactEmail: 'jim@jim.com',
  contactPhone: '1234 4566',
};

И в моем файле компонентов у меня есть:

type ContactInfoInterface = {
  contactName: string;
  contactEmail: string;
  contactPhone: string;
};

interface ContactInfoBlockProps {
  contactInfo: ContactInfoBlock[];
}

const ContactInfoBlock = ({ contactInfo }: ContactInfoBlockProps) => {

 return (
   <Typography variant="h6">
     {contactInfo.contactName}
   </Typography>
   //etc

Это работает - данные фактически появляются в интерфейсе. Но я получаю предупреждение:

Свойство contactName не существует для типа ContactInfoInterface [] '. TS2339

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

Кто-нибудь знает, что я могу сделать?

1 Ответ

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

Это работает - дата фактически отображается в интерфейсе

Это означает, что ваша подпись TypeScript неверна.

Fix

Должно быть:

interface ContactInfoBlockProps {
  contactInfo: ContactInfoBlock;
}

т.е. это не массив , так как contactInfo.contactName работает во время выполнения

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