-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
描述
使用 z.infer 從 Zod schema 生成表單的型別,並應用於 useForm hook,確保表單資料的型別安全。
範例實作
const formSchema = z.object({
name: z.string().min(1),
nickname: z.string().optional(),
});
type TeamFormValues = z.infer<typeof formSchema>;
const form = useForm<TeamFormValues>({
resolver: zodResolver(formSchema),
defaultValues: { name: "", nickname: "" },
});任務清單
- 識別所有使用
useForm的元件 - 為每個表單建立對應的 Zod schema
- 使用
z.infer<typeof schema>生成型別 - 更新
useFormhook 的型別參數 - 確認
onSubmit回調函式的型別安全 - 測試表單驗證功能
可能問題與解決方案
- 問題: 現有 schema 與實際表單資料不匹配
- 解決: 逐步對照並調整 schema,確保一致性
- 問題: defaultValues 型別不匹配
- 解決: 使用
Partial<T>或提供完整的預設值
風險與緩解
- 風險等級:中
- 緩解:逐步對照與調整 schema;
defaultValues採用Partial<T>或補齊值;維持向下相容;為主要表單建立 smoke/E2E 測試腳本
測試與驗收
- 受影響表單的驗證與提交流程無錯誤
- 關鍵數字欄位與邊界條件(空字串、null、非數字)皆正確處理
優先級: High
Story Points: 5
預估工時: 2-3 天
Metadata
Metadata
Assignees
Labels
No labels