Typescript:如何抑制“没有重载与此调用匹配”?

Run*_*ror 2 typescript reactjs react-native native-base

所以我有一个 React Native 应用程序,它使用 Native Base 作为 UI 库和 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 不提供listKeyAccordion.

这是代码:

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;
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 8

快速解决:

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

了解更多

较少有罪的解决方案:

如果您查看 的 NativeBase类型定义Accordion您会发现没有listKey. 在底层,NativeBaseAccordion使用FlatList. 我们从 React Native的extends类型定义中知道,它有一个.FlatListVirtualizedListProps<ItemT>listKey

看看Accordion我们看到的实现,它获取FlatList 了所有的 propsAccordion,这意味着所有的FlatListprops 都应该被支持。因此Accordion应该扩展FlatList道具。您可以添加listKeyAccordion类型定义或发送 Github 问题。

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