// schemaイメージ
const schema = z.object({
fromA: z.object({
text: z.string().max(10),
}),
formB: z.object({
text: z.string().max(10),
}),
});
/**
* JSON.stringifyでwalkする
*/
const getFormErrorCount = (errors: FieldErrors<typeof schema>) => {
// グループごとのエラーをmessageでカウントする
let messageCount = 0;
JSON.stringify(errors, (key: string, value: object) => {
if (key === 'message') {
messageCount++;
}
if (key === 'ref') {
return undefined;
}
return value;
});
}
// フォームAの文字数が溢れていたら 1が返る
getFormErrorCount(errors.fromA); // => 1
getFormErrorCount(errors.fromB); // => 0
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme