-
Notifications
You must be signed in to change notification settings - Fork 59
Open
Description
Describe the bug
When using the MasonryList component in a TypaScript project, the renderItem
prop param item
is not being typed as the elements given to the data prop array, but it is type 'unknown' so when rendering the item, ts raises this problem.
If I use FlatList
or ScrollView
instead, I don't get this warning.
To Reproduce
Steps to reproduce the behavior:
- Create TypeScript project.
- Define this constants:
interface PostPreviewProps {
id: string;
imgUrl: string;
}
const posts: PostPreviewProps[] = [
{
id: '1',
imgUrl: 'https://img.freepik.com/free-photo/delicious-donuts_144627-6267.jpg?t=st=1708687137~exp=1708690737~hmac=f9cf5f46c098a440e9581533fe07c587d300dfc22b44d0cc7cdb1b6810503314&w=1480',
},
{
id: '2',
imgUrl: 'https://img.freepik.com/free-photo/vertical-shot-fox-walking-rocks-forest_181624-31966.jpg?t=st=1708686685~exp=1708690285~hmac=b7d67c6f8bf2576069aaa00308da904b12ae956275498340427b94165f880a60&w=996',
},
];
- Define the following component to render the item:
function PostPreview(props: PostPreviewProps): JSX.Element {
return (
<View>
<Image
source={{ uri: props.imgUrl }}
/>
</View>
);
}
- Render the following:
<MasonryList
data={posts}
renderItem={({ item }) => (
<PostPreview {...item} />
)}
/>
- See ts problem
Expected behavior
The item
param from the renderItem
callback should have type PostPreviewProps
, since the data value (posts) is an array of such item type. Both FlatList
and ScrollView
do this automatically, but this MasonryList
component says item
is type unknown
, which causes the ts
problem reported when passed item as props to the PostPreview
component.
aeslami
Metadata
Metadata
Assignees
Labels
No labels