GitHub - ssi02014/react-query-tutorial: 😃 TanStack Query(aka. react query) 에서 자주 사용되는 개념 정리
React Query는 TypeScript의 제네릭(Generics)
을 많이 사용한다. 이는 라이브러리가 실제로 데이터를 가져오지 않고 API가 반환하는 데이터 유형을 알 수 없기 때문이다.
현재 useQuery가 갖고 있는 제네릭은 4개
이며, 다음과 같다.
TQueryFnData
: useQuery로 실행하는 query function의 실행 결과
의 타입을 지정하는 제네릭 타입이다.TError
: query function의 error
형식을 정하는 제네릭 타입이다.TData
: useQuery의 data
에 담기는 실질적인 데이터의 타입을 말한다. 첫 번째 제네릭과의 차이점은 select
와 같이 query function의 반환 데이터를 추가 핸들링을 통해 반환하는 경우에 대응할 수 있는 타입이라고 생각하면 좋다.TQueryKey
: useQuery의 첫 번째 인자 queryKey
의 타입을 명시적으로 지정해주는 제네릭 타입이다.// useQuery의 타입
export function useQuery<
TQueryFnData = unknown,
TError = unknown,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey
>
// useQuery 타입 적용 예시
const { data } = useQuery<
SuperHeros,
AxiosError,
SuperHeroName[],
[string, number]
>(["super-heros", id], getSuperHero, {
select: (data) => {
const superHeroNames = data.data.map((hero) => hero.name);
return superHeroNames;
},
});
/**
주요 타입
* data: `SuperHeroName[]`
* error: `AxiosError<any, any>`
* select: `(data: SuperHeros): SuperHeroName[]`
*/