使用Gluestack-ui FlatList遇TypeScript类型错误,如何解决?
解决@gluestack-ui/themed FlatList的TypeScript类型错误
@gluestack-ui/themed的FlatList组件不会自动根据传入的data推断item的类型,导致TypeScript无法识别item为string类型,从而抛出类型不匹配错误。可以通过以下几种方式解决:
显式给FlatList指定泛型参数
直接在FlatList组件后声明泛型<string>,明确约束item的类型:import { FlatList } from "@gluestack-ui/themed"; <FlatList<string> data={galleryUrls} renderItem={({item, index}) => <GalleryItem url={item} />} />给数据源显式声明类型
如果galleryUrls没有提前声明类型,给它加上string[]的类型注解,让FlatList自动推断item类型:const galleryUrls: string[] = ["url1", "url2", "url3"]; <FlatList data={galleryUrls} renderItem={({item, index}) => <GalleryItem url={item} />} />给renderItem函数指定类型
导入FlatListRenderItem类型,给渲染函数声明类型:import { FlatList, FlatListRenderItem } from "@gluestack-ui/themed"; const renderGalleryItem: FlatListRenderItem<string> = ({item, index}) => ( <GalleryItem url={item} /> ); <FlatList data={galleryUrls} renderItem={renderGalleryItem} />
以上任意一种方式都能让TypeScript正确识别item为string类型,解决"Type 'unknown' is not assignable to type 'string'"的错误。
内容的提问来源于stack exchange,提问作者Don Price
相关产品推荐
相关产品推荐

