ソースを参照

♻️ refactor(files): 优化文件类型定义方式

- 从file.schema.ts中移除FileType导出,改用Hono的InferResponseType从API响应推断类型
- 在AvatarSelector组件中使用InferResponseType获取文件类型定义,提高类型安全性和一致性
yourname 4 ヶ月 前
コミット
760259d832

+ 3 - 1
src/client/admin-shadcn/components/AvatarSelector.tsx

@@ -5,11 +5,13 @@ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, D
 import { Card, CardContent } from '@/client/components/ui/card';
 import { toast } from 'sonner';
 import { fileClient } from '@/client/api';
-import type { FileType } from '@/server/modules/files/file.schema';
 import MinioUploader from '@/client/admin-shadcn/components/MinioUploader';
 import { Check, Upload, Eye, X } from 'lucide-react';
 import { Avatar, AvatarFallback, AvatarImage } from '@/client/components/ui/avatar';
 import { cn } from '@/client/lib/utils';
+import type { InferResponseType } from 'hono/client';
+
+type FileType = InferResponseType<typeof fileClient.$get, 200>['data'][0]
 
 interface AvatarSelectorProps {
   value?: number;

+ 1 - 3
src/server/modules/files/file.schema.ts

@@ -89,6 +89,4 @@ export const UpdateFileDto = z.object({
     description: '文件描述',
     example: '2023年度项目计划书(修订版)'
   })
-});
-
-export type FileType = z.infer<typeof FileSchema>
+});