Nul*_*ead 2 types typescript supabase supabase-js
我在我的 supabase 数据库中创建了一个名为的表customer。使用生成我的类型
npx supabase gen types typescript --project-id "$PROJECT_REF" --schema public > types/supabase.ts
Run Code Online (Sandbox Code Playgroud)
在我的 React 应用程序中,这就是我引用生成类型的方式。
const [customerDetails, setCustomerDetails] = useState<Database["public"]["Tables"]["customer"]["Row"]>()
Run Code Online (Sandbox Code Playgroud)
能不能再干净一点,像这样?
const [customerDetails, setCustomerDetails] = useState<customer>()
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以使用这样的东西
https://github.com/FroggyPanda/better-supabase-types
对 SUPABASE 生成的类型进行后处理。这将生成一个新的架构文件,其内容如下
export type Account = Database['public']['Tables']['accounts']['Row'];
export type InsertAccount = Database['public']['Tables']['accounts']['Insert'];
export type UpdateAccount = Database['public']['Tables']['accounts']['Update'];
Run Code Online (Sandbox Code Playgroud)
如果您不需要其他依赖项或编写自己的后处理器脚本,您还可以使用此处建议的一些辅助类型来改进类型:
export type Row<T extends keyof Database['public']['Tables']> = Database['public']['Tables'][T]['Row'];
export type InsertDto<T extends keyof Database['public']['Tables']> = Database['public']['Tables'][T]['Insert'];
export type UpdateDto<T extends keyof Database['public']['Tables']> = Database['public']['Tables'][T]['Update'];
Run Code Online (Sandbox Code Playgroud)
这将导致
import { InsertDto, Row, UpdateDto } from '@src/interfaces/database';
export type Location = Row<'location'>;
export type LocationInsertDto = InsertDto<'location'>;
export type LocationUpdateDto = UpdateDto<'location'>;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |