打字稿:如何抑制"No overload matches this call"?

Typescript: How to suppress "No overload matches this call"?

所以我有一个使用 Native Base 作为 UI 库和 Typescript 的 React Native 应用程序。

现在有一个 Accordion,它在展开后立即呈现第二个(嵌套的)手风琴。问题是 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;

快速修复:

您可以尝试 //@ts-ignore 这应该会抑制警告。

For more

少罪解法:

如果您查看 FlatList 的 NativeBase type definition for Accordion, you will see that there is no listKey. Under the hood, NativeBase Accordion uses a FlatList. We know from React Native type definition extends VirtualizedListProps<ItemT> 有一个 listKey.

查看 Accordion 实现,我们看到 Accordion 中的 FlatList takes all props,这意味着应该支持所有 FlatList 道具。因此 Accordion 应该扩展 FlatList 道具。您可以将 listKey 添加到 Accordion 类型定义或发送 Github 问题。

免责声明:我从未使用过 Native Base。以上结论是看代码得出的