# ์๋ฌ ํด๊ฒฐ๐ Styled Component๋ก FlatLst ์ฌ์ฉ ์ renderItem type unknown ์๋ฌ
FlatList์ ํ์ ์ด ์ ์๋ data๋ฅผ ๋๊ฒจ์ฃผ์์์๋ ๋ถ๊ตฌํ๊ณ , renderItem์ ํ์ ์ด unknown์ผ๋ก ๋์ค๋ ์๋ฌ๊ฐ ์์๋ค. styled.FlatList์ด styled-components์ ํ์ ์ ์๋ก๋ ์ง์๋์ง ์๊ธฐ ๋๋ฌธ์ด์๋ค.
const [cleanData, setCleanData] = useState<CoinItem[]>([]);
// ์ค๋ต
return (
<List
data={cleanData} // const cleanData: CoinItem[]
ItemSeparatorComponent={() => <View style={{ height: 10 }} />}
numColumns={3}
columnWrapperStyle={{
justifyContent: 'space-between',
}}
keyExtractor={(item) => item.id} // error: Object is of type 'unknown'.ts(2571)
renderItem={({ item, index }) => (
<Coin index={index} symbol={item.symbol} /> // error: Object is of type 'unknown'.ts(2571)
)}
/>
);
const List = styled.FlatList`
padding: 20px 10px;
width: 100%;
`;
์ฌ์ค.. type assertion์ผ๋ก keyExtractor={(item) => (item as CoinItem).id}
์ด๋ ๊ฒ ์ ์ํด์ค๋ค๋ฉด
์ ์ผ ๊ฐ๋จํ๊ฒ ํ์
์ ์ ์ํด์ค ์ ์๊ธด ํ์ง๋ง, item์ key๋ค์ ์์ฃผ ์จ์ฃผ์ด์ผํ๋ ๊ฒฝ์ฐ์ ์ผ์ผํ assertํด์ฃผ์ด์ผ ํ๋ ์ข์ ๋ฐฉ๋ฒ์ ์๋๋ค.
solution 1) ์คํ์ผ๋ ์ปดํฌ๋ํธ์ ํ์ ๋ถ์ฌ
const List = (styled.FlatList`
padding: 20px 10px;
width: 100%;
` as unknown) as typeof FlatList;
์คํ์ค๋ฒํ๋ก์ฐ๋ฅผ ๊ฒ์ํ๋ฉด ๊ฐ์ฅ ๋ง์ด ๋ด๋๋ ํด๊ฒฐ์ฑ
์ด์ง๋ง idealํ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ ๊ฐ๋ค.
์ ํํ๋ ์คํ์ผ๋ ์ปดํฌ๋ํธํ๋ FlatList์ unknown์ ๋ถ์ฌํ ๋ค List = (styled.FlatList
~~as unknown)
๊ทธ์ ๋ํ ํ์
์ ๋ค์ FlatList๋ก ๊ฐ์๋ผ์ฐ๋ ๋ฐฉ์์ธ๋ฐ ์.. ๋ง๋ฉ์๋ค.
solution 2) ์ต์ข
_์ง์ง์ต์ข
_์ด๊ฒ์ง์ง์ต์ข
.jpg
์ฌ๊ธฐ (opens new window) ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ (opens new window)์์ ์ฐธ๊ณ ํ ๋ฐฉ์์ด๋ค.'
List = styled(FlatList)
๋ก ์ ์ธํ๋, generic์ผ๋ก ๋ ๋ ์์ดํ
์ ํ์
์ ์ ๋ฌํด์ฃผ๋ ๋ฐฉ์.
const List = styled(FlatList as new () => FlatList<CoinItem>)`
padding: 20px 10px;
width: 100%;
`;
์ฐธ๊ณ ๋ก ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ๋ ์๋๋ฐ, ์์ ๋ฐฉ๋ฒ์ด ๋ ๊ฐํธํ๋ค.
const StyledGenericComponent = styled(GenericComponent)`
position: relative;
` as React.ComponentType as new <T>() => GenericComponent<T>;
โ ์๋ฌ ํด๊ฒฐ๐ error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. ์๋ฌ ํด๊ฒฐ๐ react native template typescript An unexpected error occurred: "https://registry.yarnpkg.com/react-native-template-react-native-template-typescript: Not found" โ