Машинопись: Как подавить «Нет перегрузки соответствует этому вызову»? - PullRequest
0 голосов
/ 30 марта 2020

Итак, у меня есть приложение React Native, которое использует Native Base в качестве UI lib и Typescript.

Теперь существует Аккордеон , который - как только он расширяется - воспроизводит второй (вложенный) Аккордеон. Проблема в том, что TypeScript жалуется:

A VirtualizedList contains a cell which itself contains more than one VirtualizedList of the same orientation as the parent list. You must pass a unique listKey prop to each sibling list.

Что совершенно нормально. Но когда я добавляю это listKey к своему Accordion, TypeScript жалуется на No overload matches this call.

Как я могу подавить это предупреждение? Потому что Native Base не предоставляет listKey как опору для своих Accordion.

Вот код:

imports ...

type Props = {};

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

  const renderNestedAccordion = () => {
    return (
      <View>
        <ComponentWithAccordion></ComponentWithAccordion>
      </View>
    );
  };

  const dataArray = [{content: renderNestedAccordion()}];

  return (
    <Accordion
      listKey={'acc'} // error
      dataArray={dataArray}
    />
  );
};

export default Test;

1 Ответ

1 голос
/ 30 марта 2020

Быстрое исправление:

Вы можете попробовать //@ts-ignore, который должен подавить предупреждение.

Для более

Менее виновное решение:

Если вы посмотрите на определение типа NativeBase для Accordion, вы увидите, что listKey нет. Под капотом NativeBase Accordion используется FlatList. Мы знаем из React Native определения типа из FlatList extends VirtualizedListProps<ItemT>, который имеет listKey.

Посмотрите на реализацию Accordion, которую мы видим, что FlatList берет все реквизиты из Accordion, что означает, что должны поддерживаться все реквизиты FlatList. Следовательно, Accordion должен расширять FlatList реквизита. Вы можете добавить listKey к определению типа Accordion или отправить вопрос Github.

Отказ от ответственности: Я никогда не использовал Native Base. Приведенный выше вывод сделан путем просмотра кода.

...