打字稿:如何抑制"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
这应该会抑制警告。
少罪解法:
如果您查看 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。以上结论是看代码得出的
所以我有一个使用 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
这应该会抑制警告。
少罪解法:
如果您查看 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。以上结论是看代码得出的