뉴히의 개발 로그
supabase typescript : 데이터베이스 테이블 제네릭 타입 선언 본문
수파베이스를 사용 시
수퍼베이트 테이블 타입 파일에서 필요한 데이터의 타입을 가져오는데
각각 필요한 테이블 마다 타입을 선언해줘야하는 번거로움 !!
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'>
이런 방식을 활용하면 데이터베이스 스키마가 변경되더라도 해당 코드 한 곳만 수정하면 되므로 유지보수가 편리해지고 또한 타입 안전성을 보장하면서 코드를 간결하게 유지할 수 있다
'Supabase' 카테고리의 다른 글
[supabase] Authentication Policies RLS(row-level security) 인증 보안 정책 오류/해결/추가 방법 (0) | 2024.03.22 |
---|---|
[supabase] 수파베이스 테이블명 테이블이름 변경/삭제 (0) | 2023.08.25 |
[TIL] 20230824 - supabase RLS 오류 테이블 생성 시 설정 INSERT/SELECT (0) | 2023.08.24 |