«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
Recent Posts
Recent Comments
관리 메뉴

뉴히의 개발 로그

supabase typescript : 데이터베이스 테이블 제네릭 타입 선언 본문

Supabase

supabase typescript : 데이터베이스 테이블 제네릭 타입 선언

뉴히 2023. 8. 18. 20:50

수파베이스를 사용 시

수퍼베이트 테이블 타입 파일에서 필요한 데이터의 타입을 가져오는데

각각 필요한 테이블 마다 타입을 선언해줘야하는 번거로움 !!

export type UserType = Database['public']['Tables']['test']['Row'];

 

 

TypeScript의 제네릭과 맵드 타입(Mapped Types)을 활용하여 데이터베이스 테이블의 타입을 더 간결하고 유연하게 정의하는 방법

export type Tables<T extends keyof Database['public']['Tables']> = Database['public']['Tables'][T]['Row'];

T extends keyof Database['public']['Tables'] : T는 테이블 이름, 이는 Database['public']['Tables'] 객체의 키 중 하나여야 한다

Database['public']['Tables'][T]['Row'] : 위에서 입력된 테이블 이름 T를 사용하여 해당 테이블의 Row 타입을 가져올 수 있다!

 

사용 예시 

Tables<'users'>

이런 방식을 활용하면 데이터베이스 스키마가 변경되더라도 해당 코드 한 곳만 수정하면 되므로 유지보수가 편리해지고 또한 타입 안전성을 보장하면서 코드를 간결하게 유지할 수 있다